使用string作为打开文件path的C ++ ifstream错误。
我有:
string filename: ifstream file(filename);
编译器抱怨ifstream文件和string之间没有匹配。 我需要将文件名转换成什么?
这是错误:
error: no matching function for call to 'std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)' /usr/include/c++/4.4/fstream:454: note: candidates are: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
更改
ifstream file(filename);
至
ifstream file(filename.c_str());
因为ifstream
的构造函数需要一个const char*
,而不是一个string
pre-C ++ 11。
ifstream
构造函数需要一个const char*
,所以你需要做ifstream file(filename.c_str());
使其工作。
在c + + – 11它也可以是一个std ::string。 所以(安装c + + – 11)和改变你的scheme项目为c + + – 11也可以解决这个问题。