我有一个小程序,其中我初始化了一个字符串并将其写入文件流:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
std::ofstream ofs(file.c_str());
string s="Hello how are you";
if(ofs)
ofs<<s;
if(!ofs)
{
cout<<"Writing to file failed"<<endl;
}
return 0;
}
我的磁盘空间非常少,语句 "ofs<" 失败了。所以我知道这是一个逻辑错误。
语句 "if(!ofs)" 没有遇到上述问题,因此我无法知道它为什么失败了。
请告诉我,还有哪些选项可以让我知道 "ofs<" 已经失败。
提前感谢。
ofstream::operator<<
失败,它将修改内部状态标志。你是否检查过ofstream::eof
/bad
/fail
? - emlaiofstream::operator<<
将失败。由于缓冲,通常不会在输出操作上失败。通常情况下,在close
之后验证ofstream
的状态就足够了(此时保证所有数据都已刷新);如果您需要及时检查,则必须先刷新流。 - James Kanze