我的程序目前遇到了麻烦。我只想修改文本文件中的6行,从第76行到第81行,我不知道怎么做。
我想在这些行的末尾添加一些东西(或者如果更容易的话替换它们),并且不修改任何其他行(可能检查修改是否已经发生,但这是额外的)。
我发现自己在谷歌上找不到答案,你能帮帮我吗?
如果您的替换文本与原始文本相同,确切的长度,您可以以读/写方式打开文件并覆盖文本。
传统的方法(自卷对卷磁带以来)一直是将未修改的文本复制到新文件中,然后是修改后的文本,然后是原始文本的其余部分。
建议使用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行。