2017-02-24 71 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(); 
}