为什么Dev C++
不允许我file.open(file_name_variable)
?我不明白为什么它不会让我打开任何东西,只有像file.open("abc.txt")
这样的硬编码名称如何解决这个问题?不要使用Dev C ++?
这基本上就是我所拥有的:
int open_file(string file_name){
ifstream file;
file.open(file_name);
if (!file.is_open()){
return 0;
}
return 1;
}
答案 0 :(得分:6)
你需要传递一个c字符串。使用:
file.open( file_name.c_str() );
在C ++ 11中,不再需要这样做了。添加了std::string
的签名。
答案 1 :(得分:1)
fstream::open
需要const char *
作为第一个参数。
void open ( const char * filename,
ios_base::openmode mode = ios_base::in | ios_base::out );
它不需要std::string
(顺便说一句,这是一种耻辱)
您需要将std::string
转换为const char *
file.open(file_name.c_str())
答案 2 :(得分:0)
亚历山大是对的,我想。 open的签名是:
void open(const char * filename,ios_base :: openmode mode);
您尝试将std :: string作为const char *传递,但是std :: string没有运算符const char *(出于安全原因)。相反,您必须使用c_str()方法。问题不在于对const char *的隐式转换应该是可用的,但是basic_ifstream应该有一个接受字符串的开放重载 - 据我所知,这是在C ++ 0x中添加的,但我不知道
。没有参考。