我正在打开一个用C ++(Linux,Debian)阅读的文件。
ifstream input ("readme");
以上是有效的,但是当我尝试:
string filename = "readme";
ifstream input (filename);
我从error: no matching function for call to...
为什么这不起作用?我如何使用字符串变量作为文件名输入?
答案 0 :(得分:4)
您可以使用:
string filename = "readme";
/* Convert filename to C string of type const char*
(null terminated) using c_str method
*/
ifstream input (filename.c_str());
或使用C ++ 11标志
-std=c++11
或-std=c++0x
参考:c_str
答案 1 :(得分:1)
ifstream
的构造函数和接受std::string
的朋友只在C ++ 11中添加,这意味着你应该使用符合C ++ 11标准的库实现,或至少一个支持特定功能。 See cppreference for additional info.
为了能够在您的案例中使用std::string
作为文件名,请使用std::string::c_str()
:
string filename = "readme";
ifstream input (filename.c_str());
此方法适用于较旧的非C ++ 11编译器。