什么是在向fstream发送数据时检查一般错误的正确方法?
更新:我主要关心的是关于输出和任何数据实际写入硬盘之间存在延迟的一些事情。我的假设是命令“save_file_obj << save_str”只会将数据发送到某种缓冲区,并且以下检查“if (save_file_obj.bad())”无法确定是否存在操作系统或硬件问题。我只想知道将字符串发送到文件并检查确保它已写入磁盘的明确的“全捕获”方法,然后进行任何后续操作,例如关闭程序。
我有以下代码...
更新:我主要关心的是关于输出和任何数据实际写入硬盘之间存在延迟的一些事情。我的假设是命令“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;
}
}
string
而是使用basic_string<unsigned char>
的评论。非常好的指出了问题的重要部分。 - Sz.