C ++文本文件:写入特定行的末尾

时间:2015-02-04 18:23:11

标签: c++ file text end-of-line

我试图创建一个程序,我可以将字符串写入文本文件中某一行的末尾。

例如,这是一个只有一堆随机数的文本文件:

12 23
53 23

现在如果我有一个程序在第一行(或任何指定行)的末尾添加另一个两位数的数字,请记住,如果我继续运行程序,该行将继续扩展。< / p>

因此在运行程序后,文本文件看起来像这样:

12 23 34
53 23

有哪些方法可以解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果我理解这个问题,这是不可能的。问题是如果你让一行更长,它会覆盖下一行。你似乎期待以下几行向下移动以腾出空间,但这不是它的工作方式。

除非您的文件很大,否则最好的方法是将文件加载到内存中,修改内存中的数据,然后创建一个新文件来保存结果。 (如果需要,您可以保存到同一个文件。)

其他算法涉及使用固定大小的块,在文件中包含链接列表,但听起来您希望将文件作为普通文本,因此可能不起作用。

答案 1 :(得分:0)

您绝不应尝试在适当位置编辑文本文件。最常见的方法是将编辑后的文件写入临时位置,最后将其重命名为旧名称(删除原始文件后)。

另一种方法是(假设文件足够小)将所有内容加载到内存中并从头开始重写文件。但是永远不要对敏感文件这样做,因为如果你的程序(或你的计算机或电源)在中间崩溃,你的文件肯定会丢失。