fstreamにデータを送信するときに一般的なエラーをチェックする正しい方法は何ですか?
更新:私の主な関心事は、出力とハードディスクに物理的に書き込まれるデータとの間の遅延について聞いたことがあることです。私の仮定では、コマンド「save_file_obj << save_str」はデータをある種のバッファーにのみ送信し、次のチェック「if(save_file_obj.bad())」はOSまたはハードウェアが存在するかどうかを判断するのに使用されません。問題。プログラムを閉じるなどの次のアクションを実行する前に、文字列をファイルに送信し、ディスクに書き込まれたことを確認するための最も信頼のおける「キャッチオール」方法を知りたかっただけです。
私は次のコードを持っています...
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;
}
}