打开要在C ++中读取的文件,发出文件名字符串

时间:2013-11-27 03:10:35

标签: c++ linux ifstream

我正在打开一个用C ++(Linux,Debian)阅读的文件。

ifstream input ("readme");

以上是有效的,但是当我尝试:

string filename = "readme";
ifstream input (filename);

我从error: no matching function for call to...

开始出现页面加载错误

为什么这不起作用?我如何使用字符串变量作为文件名输入?

2 个答案:

答案 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编译器。