在每个std :: ofstream调用上覆盖文件的内容

时间:2014-06-24 10:06:11

标签: 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()无法胜任。

1 个答案:

答案 0 :(得分:2)

只需使用std::ofstream::seekp()重置print()来电

之间的输出位置即可
   std::ofstream fout( "out.txt" );
   print( fout, 1 );
   fout.seekp(0); // <<<<
   print( fout, 2 );

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