我遇到以下代码的问题:
fstream s("tst.txt" , fstream::binary);
s.seekp(5, fstream::beg);
s.write("testing", 7);
它应该保留文件中的前五个字符,但事实并非如此! 它丢弃了整个旧数据,我必须保留旧数据并仅覆盖一块文件数据,它应该处于二进制模式 有人帮忙吗? 提前谢谢。
答案 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。