gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:46:05 33 4
gpt4 key购买 nike

下面的代码

#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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com