我正在尝试打开一个二进制文件进行写入而不擦除内容。但我不想写eof。我想写入文件中的特定位置。
这是一个小例子:
ofstream out("test.txt", ios::binary | ios::app);
for(int i = 0; i < 100; i++)
out.put('_');
out.write("Hallo", 5);
out.close();
ofstream out2("test.txt", ios::binary | ios::app);
out2.seekp(10);
out2.write("Welt", 4);
out2.close();
如果使用应用程序,搜索不起作用。如果不使用应用程序打开文件,则会删除数据。有人知道答案吗?
尝试第二次过载seekp
,它允许您提供偏移量和方向,这可能是您案例中文件的开头(即ios_base::beg
)。当然,这假设您知道自己在做什么,并且您想要做的就是覆盖现有的字符数。
编辑:这是完整的工作示例:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
{
ofstream out("test.txt", ios::binary);
for(int i = 0; i < 100; i++)
out.put('_');
out.write("Hallo", 5);
}
{
fstream out2("test.txt", ios::binary | ios::out | ios::in);
out2.seekp(10, ios::beg);
out2.write("Welt", 4);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)