3

do-while ループを含む C++ ドライバーがあります。このループ内では、クラスのメンバー関数によって何度も繰り返されるたびにデータがディスクに書き込まれます。面白いことに、この関数は n 回目の呼び出しでほとんどすべてのデータを書き込んでいるように見えますが、(n+1) 回目の呼び出しで残りを書き込んでいるようです。次に、(n + 1)番目のデータの一部を書き込み、途中で書き込みを停止します...

ここで不正確に話している可能性がありますが、ファイルストリームがデータを保存しており、ディスクへの書き込みを完了するのに十分な時間がないと思われます (関数が呼び出されるたびに書き込むデータがたくさんあります)。次に、最後に使用されたときに残っていたものを書き込み、現在行っているはずだったことに移ろうとします。

誰かが同様の問題に遭遇しましたか? fstream が完全に書き込みを完了する前に、プログラムが先に進まないようにする方法はありますか?

4

1 に答える 1

3

fstream::flush()を呼び出して、ストリームが基になるストレージ デバイスと確実に同期されるようにすることができます。

于 2014-02-04T17:31:44.667 に答える