我创建了 ofstream文件。
如何写入我文件中当前行的开头?
例如:我写道:
a b c d e f
现在我想在开头添加我的字母数(6),如下所示:
6 a b c d e f
答案 0 :(得分:2)
您必须以字节数组读取整个文件。
然后编写“前缀”,然后将字节数组写入tmp文件。
最后,您必须删除原始文件并重命名tmp文件。
如果要在任意行的开头写入,则应该以字节数组的数组读取整个文件,将前缀附加到要编辑的行,最后覆盖原始文件。
答案 1 :(得分:0)
<强>提示: - 强>
如果是文本文件,那么最好的解决方案是将旧内容刷新到临时位置,写下您需要的内容并附加旧内容
答案 2 :(得分:0)
文件非常静态,不支持在最后添加任何字符。如果需要在其他地方添加字符,则需要重写该文件。此外,文件实际上没有行的概念。
你可以做的是在行的开头记录文件的位置(使用file.tellp()
),写几个占位符(例如空格),然后其余部分。一旦完成该行,您将重新定位写入位置(使用file.seekp()
)并覆盖一些占位符。
就个人而言,我不会做那样的事情!相反,我会将该行格式化为std::ostringstream
,并在完成后写入行开始信息,然后是固定行(使用std::ostringstream
从str()
获得)。好吧,理想情况下,如果信息随时可用,我会将信息直接写入文件中。
答案 3 :(得分:0)
文件本质上是从特定位置开始的字节流。在文件的前面(或中间)插入新数据的唯一方法是移动后面的数据。由于您希望重写第一行,这意味着您需要读取整个文件,添加新数据,并在现有文件上写出整个(新)文件。您可以使用单个std::fstream
对象执行此操作,但在读取文件后需要将文件光标重置为开头。使用std::ifstream
对象读取文件然后用std::ofstream
对象覆盖文件会更清楚。
答案 4 :(得分:0)
我有我的代码:
file&lt;&lt;的 ARGS 强>
- &gt;在这里我想在这行的开头添加一个新的参数..(这个参数有 args的信息但我必须写 args 和在我获得参数的信息之后)
file&lt;&lt; ENDL;