2017-02-24 78 views
0

這是打開任何文本文件的正確方法是什麼?這是我使用的代碼的一小部分。試圖通過膩子打開文件時,我總是收到錯誤消息。打開任何文本文件

int main(int argc, char *argv[]) 
{ 
string a; 
a = argv[1]; 
//a = a + ".txt"; 
ifstream fin; 
fin.open(a); 
} 
  • x.cpp:在函數 'INT主(INT,字符**)':

  • x.cpp:1225:12:錯誤:對呼叫沒有匹配的功能爲'的std :: basic_ifstream ::打開(的std :: string &)」

    fin.open(a)的

  • x.cpp:1225:12:注:候選是:7:: 在文件從x.cpp包括0: /usr/include/c++/4.8.2/fstream:538:7:注:無效的std :: basic_ifstream < _CharT,_Traits> ::開放(常量字符*,性病::的ios_base ::用於openmode)[與_CharT =炭; _Traits = std :: char_traits;的std ::的ios_base ::用於openmode =標準:: _ Ios_Openmode]

    開放(常量字符* __s,的ios_base ::用於openmode __mode =的ios_base ::中)

  • /usr/include/c++/4.8.2/fstream的:538:7:注:從 '的std :: string {又名性病:: basic_string的}' 到 '常量字符*'

任何幫助爲參數1沒有已知的轉化,將不勝感激。

+0

這有什麼做用膩子,你需要先修正錯誤。首先,'argv [1]'不是'字符串',它是'char *'。 – bejado

回答

2

您可以直接通過程序參數fin.open,你不需要轉換爲string第一:

#include <iostream> 
#include <fstream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    ifstream fin; 
    fin.open(argv[1]); 

    string line; 
    if (fin.is_open()) { 
     getline(fin, line); 
     cout << line << '\n'; 
    } 

    fin.close(); 
}