c++写入文件当前行的开头

c++ write to the beginning of current line of file

本文关键字:开头 文件 c++      更新时间:2023-10-16

我创建了一个流文件

如何写入文件的当前行的开头?

例如:我写:

a b c d e f

现在我想在开头加上我的字母数(6),如下所示:

6 a b c d e f

您必须读取字节数组中的整个文件。

然后将"前缀"写入tmp文件,然后将字节数组写入tmp。

最后,您必须删除原始文件并重命名tmp文件。

如果你想在任意一行的开头写入,那么你应该读取字节数组中的整个文件,将前缀附加到你想要编辑的行,最后覆盖原始文件。

提示:-

如果它是一个文本文件,那么最好的解决方案是将旧内容刷新到一个临时位置,编写所需内容并附加旧内容

文件是非常静态的,不支持在任何地方添加字符,除非在末尾。如果需要在其他地方添加字符,则需要重写文件。此外,文件实际上并没有行的概念。

可以在行的开头记录文件的位置(使用file.tellp()),写几个占位符(例如空格),然后写行的其余部分。行完成后,您需要重新定位写入位置(使用file.seekp())并覆盖一些占位符。

就我个人而言,我不会做那样的事!相反,我会将行格式化为std::ostringstream,并在完成后写入行起始信息,然后写入固定的行(使用str()std::ostringstream获得)。理想情况下,如果文件随时可用,我会直接将信息按一个序列写入文件。

文件本质上是从特定位置开始的字节流。在文件的前面(或中间)插入新数据的唯一方法是移动后面的数据。由于您希望重写第一行,这意味着您需要读取整个文件,准备新数据,并在现有文件上写出整个(新)文件。您可以使用单个std::fstream对象来执行此操作,但在读取文件后需要将文件光标重置为开头。使用std::ifstream对象读取该文件,然后用std::ofstream对象覆盖该文件会更清楚。

我的代码上有:

文件<lt参数

-->在这里,我想在这行的开头添加一个新的论点。。(此参数包含args的信息,但我必须编写args

文件<lt;endl;