使用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也可以解决这个问题。