当我杀死应用程序时,无法保存写入文件的数据

bil*_*ill 0 c++ file

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

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();
Run Code Online (Sandbox Code Playgroud)

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

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

chw*_*arr 5

当你完成"足够"的工作时,你可能需要刷新你的std :: ofstream.

"足够"的工作将取决于您的应用程序.

也许

...
outfile<<info;
outfile.flush();
...
Run Code Online (Sandbox Code Playgroud)

  • Fwiw,`std :: ofstream`在关闭时刷新(有效地调用[`rdbuf() - > close()`](http://en.cppreference.com/w/cpp/io/basic_filebuf/close)).OP未关闭文件,或未正确打开文件. (2认同)

MyN*_*ick 5

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

outfile << n;
outfile.flush();
Run Code Online (Sandbox Code Playgroud)

  • 它不是操作系统:它是c ++运行时库,它避免了不必要的缓冲区刷新,因为它们相对昂贵. (2认同)