文件路径名称和用户输入

时间:2015-03-09 00:46:42

标签: c++ ifstream istream

我试图让用户输入我的程序要读取的文件的文件路径。但是,当我尝试编译代码时,它会出错,并出现以下错误:没有匹配函数来调用'std :: basic_ifstream :: open(std :: string&)'。当我直接输入文件而不是使用getline或cin时,代码正常工作且没有错误。我不知道是什么问题。有什么建议?

int main()
{
 ifstream input_file;
 string file_name;
 cout<< "Please input file path to PostFix arithmetic expressions file\n";
 getline(cin, file_name);
 input_file.open(file_name);
 read_and_evaluate(input_file);
}

1 个答案:

答案 0 :(得分:0)

您需要编译为C ++ 11才能获得带有ifstream参数的open构造函数或std::string成员函数。使用g ++使用-std=c++11选项。

在C ++ 03中,iostream构造函数只支持C字符串,您可以通过std::string::c_str()获取。

请注意,无论C字符串还是std::string,在Windows中都无法打开路径中包含非ANSI字符的文件,除非您先缩短DOS 8.3路径项的路径(这是纯粹的ASCII)。