流状态检查和is_open()
C++文件流从ios_base
类哪里继承了一个流状态成员,通过该成员我们可以获得流状态的相关信息:一切顺利、已经到达文件尾、I/O操作失败等。
先看一下下面的代码
using namespace std;
int main(int argc, const char * argv[]) {
//1.写入
ofstream writeFile;
writeFile.open("/Users/a1/Desktop/wenjianliu.txt");
if (writeFile.is_open()) {
cout << "请输入要写入的内容 : " << endl;
string myWrite;
cin >> myWrite;
writeFile << myWrite << endl;
writeFile.close();
}else{
cout << "打开失败" << endl;
}
//2.读取
ifstream readFile;
readFile.open("/Users/a1/Desktop/wenjianliu.txt");
if (readFile.is_open()) {//打开文件成功
char ch;
while (readFile.get(ch)) {
cout << ch ;
}
cout << "The End." << endl;
readFile.close();
}else{//打开文件失败
cout << "打开失败" << endl;
}
return 0;
}
如上:
我们在打开一个文件进行读写操作时,首先会进行判断这个文件是否打开成功,除了
if (writeFile.is_open()) {
}
这种判断外,我们还有下面的三种方式:
if (writeFile.fail()) {//打开失败 } if (!writeFile.good()) {//打开失败 } if (!writeFile) {//打开失败 }