我试图让用户输入我的程序要读取的文件的文件路径。但是,当我尝试编译代码时,它会出错,并出现以下错误:没有匹配函数来调用'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);
}
答案 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)。