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

时间:2013-12-02 18:40:49

标签: c++ file line

我创建了 ofstream文件

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

例如:我写道:

a b c d e f

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

6 a b c d e f

5 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

<强>提示: -

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我有我的代码:

file&lt;&lt;的 ARGS

- &gt;在这里我想在这行的开头添加一个新的参数..(这个参数有 args的信息但我必须写 args 和在我获得参数的信息之后)

file&lt;&lt; ENDL;