当我终止应用程序时无法保存写入文件的数据

Trouble saving data written to a file when I kill the app

我的程序总是将数据写入文件,但是当我在程序完全停止之前关闭它时,最终结果是没有任何内容写入文件。我真的很想能够在不完全完成它的情况下关闭它,那么我该如何解决这个问题以使其不断保存文件?

ofstream outfile;
outfile.open("text.txt", std::ios::app);
bool done = false;
int info;
  while (done == false){
    cin>>info;
    outfile<<info;
    cout<<info<<"Choose different info";
       if(info == 100){
         done = true;
       }
  }
outfile.close();

这显然只是一个示例,但它与我的实际代码非常相似。

编辑:当我说关闭时,我的意思是杀死它(点击控制台右上角的红色 X)

完成 "enough" 工作后,您可能需要 flush std::ofstream。

"enough" 在这里工作将取决于您的申请。

也许

...
outfile<<info;
outfile.flush();
...

当你调用write函数时操作系统不会写入文件以节省时间,它会等待检查你是否要写入其他内容或等待一段时间"good"写入.您写入缓冲区,操作系统会将此缓冲区写入文件。 当您关闭该功能时,它将缓冲区中剩余的所有内容写入文件。您可以使用 flush 方法强制您的代码写入文件。每次写入后刷新文件就可以了。 同花顺:http://www.cplusplus.com/reference/ostream/ostream/flush/

outfile << n;
outfile.flush();