使用c ++覆盖文件中的文本

时间:2012-07-11 23:26:11

标签: c++ ofstream

我遇到以下代码的问题:

     fstream s("tst.txt" , fstream::binary);
     s.seekp(5, fstream::beg);
     s.write("testing", 7);

它应该保留文件中的前五个字符,但事实并非如此! 它丢弃了整个旧数据,我必须保留旧数据并仅覆盖一块文件数据,它应该处于二进制模式 有人帮忙吗? 提前谢谢。

1 个答案:

答案 0 :(得分:3)

试试这个:

fstream s("tst.txt" , fstream::binary | fstream::in | fstream::out);
s.seekp(5, std::fstream::beg);
s.write("testing", 7);

通过指定openmode标志,您将覆盖fstream构造函数调用中的默认openmode。