c++ - 在每次 std::ofstream 调用时覆盖文件内容

标签 c++ file fstream

下面的代码

#include <fstream>
void print( std::ofstream &f, int a ) {
   f << a << '\n';
}

int main () {
   std::ofstream fout( "out.txt" );
   print( fout, 1 );
   print( fout, 2 );
   return 0;
}

产生这样的输出

1
2

但是我只想看到 2。换句话说,我想在每次调用 print 时覆盖输出文件的内容。

这样做的原因是我想每隔一段时间调用一个更新函数。因此,每次调用更新函数时,新的统计数据都应该出现在输出文件中(而不是将当前的数据附加到之前的数据中)。

P.S:在两个打印调用之间放置 fout.clear() 不会完成这项工作。

最佳答案

只需使用 std::ofstream::seekp()重置 print() 调用之间的输出位置

   std::ofstream fout( "out.txt" );
   print( fout, 1 );
   fout.seekp(0); // <<<<
   print( fout, 2 );

请注意,fout.clear() 只是重置流的错误状态。

关于c++ - 在每次 std::ofstream 调用时覆盖文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24383815/

相关文章:

c++ - 在控制台上输出我从文件中读取的整数,使程序陷入无限循环?

c++ - 如何制作一个可以处理 .txt 文件而不显示它的 C++ 程序

c++ - 在 C++ 中,在销毁指向类的指针后,我可以使用新函数重新利用指针吗

c++ - 关联容器所需的比较器

python - 使用时覆盖 python 文件?

java - 从 GUI java 将对象的属性写入文件时出错

c++ - 使用相同的 fstream 对象在 C++ 中读取多个文件

c++ - 从数组中选择一个数字

c++ - Vuforia——识别图像时如何只播放一个视频

android - 无法替换android studio中的默认图标