我目前在处理程序方面遇到了麻烦。我想在76到81行的文本文件中只修改6行,我不知道该怎么做。
我想在这些行的最后添加一些东西(或者如果它更容易替换它们)并且不修改任何其他行(也许检查修改是否已经没有也发生了,但是那个奖金)。
我发现自己在谷歌找不到答案,你能帮助我吗?
答案 0 :(得分:0)
如果替换文字与原始文本的相同,确切长度,则可以将文件作为读/写文件打开并覆盖文本。
传统的方法(自卷到卷磁带),一直是将未修改的文本复制到新文件,然后是修改后的文本,然后是原始文本的其余部分。
我建议使用std::getline
和std::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。