将数据发送到 fstream 时检查一般错误的正确方法是什么?
更新:我主要关心的是我听到的一些关于输出和物理写入硬盘的任何数据之间的延迟的事情。我的假设是命令“save_file_obj << save_str”只会将数据发送到某种缓冲区,并且以下检查“if (save_file_obj.bad())”对于确定是否有操作系统或硬件没有任何用处问题。我只是想知道在执行任何后续操作(例如关闭程序)之前,将字符串发送到文件并检查以确保它已写入磁盘的最终“全部”方法是什么。
我有以下代码...
int Saver::output()
{
save_file_handle.open(file_name.c_str());
if (save_file_handle.is_open())
{
save_file_handle << save_str.c_str();
if (save_file_handle.bad())
{
x_message("Error - failed to save file");
return 0;
}
save_file_handle.close();
if (save_file_handle.bad())
{
x_message("Error - failed to save file");
return 0;
}
return 1;
}
else
{
x_message("Error - couldn't open save file");
return 0;
}
}