C ++ |文本文件很难(行编辑)

时间:2016-07-01 21:28:53

标签: c++ file line

我目前在处理程序方面遇到了麻烦。我想在76到81行的文本文件中只修改6行,我不知道该怎么做。

我想在这些行的最后添加一些东西(或者如果它更容易替换它们)并且不修改任何其他行(也许检查修改是否已经没有也发生了,但是那个奖金)。

我发现自己在谷歌找不到答案,你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果替换文字与原始文本的相同,确切长度,则可以将文件作为读/写文件打开并覆盖文本。

传统的方法(自卷到卷磁带),一直是将未修改的文本复制到新文件,然后是修改后的文本,然后是原始文本的其余部分。

我建议使用std::getlinestd::string

如果你真的需要性能,你可能需要考虑双缓冲。

编辑1:示例

for (unsigned int i = 0; i < 76; ++i)
{
  std::string text;
  std::getline(original_file, text);
  new_file << text << "\n";
}
// Write new text to new file
// Read old text and ignore it.
// Copy remaining text to new file.

<强>背景
虽然可以将文件视为随机访问(意味着您可以寻找随机位置),但文本的长度不固定。通常,文本文件可以被视为包含文本的可变长度记录。 计算行的唯一方法是读取直到找到换行符。因此,为了寻找第76行,必须计算行结尾,直到找到76。