以下代码
#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()
无法胜任。
答案 0 :(得分:2)
只需使用std::ofstream::seekp()
重置print()
来电
std::ofstream fout( "out.txt" );
print( fout, 1 );
fout.seekp(0); // <<<<
print( fout, 2 );
请注意,fout.clear()
只会重置流的错误状态。