写入文件中的特定位置

时间:2011-01-25 13:39:25

标签: c++ file

我有

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

5 个答案:

答案 0 :(得分:2)

使用seekp()设置文件流中的写入位置。

答案 1 :(得分:2)

您无法在文件中间“插入”内容 - 您可以执行的唯一就地操作是写入您尝试覆盖的完全相同的字节数,即在不更改文件长度的情况下进行写入。如果需要编写一个不同长度的字符串(如示例所示),则必须从结束写操作的位置重写整个文件(将原始文件存储在缓冲区中并重写)。

答案 2 :(得分:0)

结帐ostream::seekphere。在写入之前将文件指针定位到所需的位置。

答案 3 :(得分:0)

您可以使用seekp设置put指针的位置并写入文件中的特定位置,例如

 output.seekp(10);
 output.put('!');

答案 4 :(得分:0)

最佳方法是在进行必要的更改后将整个文件重写为另一个文件。

std::ifstream fin("yourfile.txt");
remove("yourfile.txt");

在删除文件之前复制流。这可以帮助您保留文件的名称。