我有
fstream output;
output.open(fname, ios::out | ios::trunc); //file
for (int i=0; i<flength; i++)
output.put('1');
我想将不同长度的数据覆盖到文件中的不同位置。数据是字符。
假设有111111111111111111111111111111111
,我想写
11 111111333111!!!!!!1 11441111
答案 0 :(得分:2)
使用seekp()
设置文件流中的写入位置。
答案 1 :(得分:2)
您无法在文件中间“插入”内容 - 您可以执行的唯一就地操作是写入您尝试覆盖的完全相同的字节数,即在不更改文件长度的情况下进行写入。如果需要编写一个不同长度的字符串(如示例所示),则必须从结束写操作的位置重写整个文件(将原始文件存储在缓冲区中并重写)。
答案 2 :(得分:0)
结帐ostream::seekp
,here。在写入之前将文件指针定位到所需的位置。
答案 3 :(得分:0)
您可以使用seekp设置put指针的位置并写入文件中的特定位置,例如
output.seekp(10);
output.put('!');
答案 4 :(得分:0)
最佳方法是在进行必要的更改后将整个文件重写为另一个文件。
std::ifstream fin("yourfile.txt");
remove("yourfile.txt");
在删除文件之前复制流。这可以帮助您保留文件的名称。