我想知道这里的错误是什么。我想输入文件名,然后检查文件是否存在,但我的代码不起作用,我不知道为什么!
#include <fstream> //for file I/O
#include <iostream>
#include <string>
using namespace std;
int main()
{
string filename;
cout << "Input a filename: ";
cin >> filename;
fstream filestr;
filestr.open (filename);
if (filestr.is_open())
{
filestr << "File successfully open";
filestr.close();
}
else
{
cout << "Error opening file";
}
return 0;
}
答案 0 :(得分:0)
此
filestr.open (filename);
应该是
filestr.open (filename.c_str());
但是,C ++ 11中存在过载,它以字符串作为参数。
在C ++ 11中: -
void open (const char* filename,
ios_base::openmode mode = ios_base::in | ios_base::out);
void open (const string& filename,
ios_base::openmode mode = ios_base::in | ios_base::out);
答案 1 :(得分:0)
当您可能希望使用std::fstream
来指定您想要输入而不是写输出时,您在此处使用std::ifstream
。
std::ifstream file(filename);
bool exists = file; // operator bool()