c++写入文件当前行的开头
c++ write to the beginning of current line of file
我创建了一个流文件。
如何写入文件的当前行的开头?
例如:我写:
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;
- 如何使字符串出现在编译的二进制可执行文件的开头?
- 如何在 的开头<x>和结尾<y>之间更改带有文件输出的字符串的值
- 如何在C++中.txt文件的开头插入字符串
- 帧提取 使用OpenCV的视频文件开头只有几秒钟
- 我想删除 txt 文件中以 %% ( C++) 开头的一些行
- 如何转到 fstream 中文件的开头?
- ifstream 读取以 开头的每个文件
- C++从文件中读取不同类型的数据,直到有一个以数字开头的字符串
- 从文件的开头读取,而不会浪费太多内存
- 写入文件开头,保留文件内容
- 将头文件(.h)放在另一个文件(.h或.cpp)的开头和结尾之间的区别
- c++写入文件当前行的开头
- 如何让'read'函数从文件的开头开始?
- 从以特定单词开头的目录中提取所有文件
- 这是怎麽?在读取使用 Unicode 编码的文本文件后控制台输出的开头
- 返回到输入文件 的某一行的开头,C++
- 如何调整/延长/截断文件并在开头留出更多空间
- seekp() 位置在文件中新行的开头
- 无法在Visual Studio 2012中打开头文件
- 视觉对象无法在C++中打开头文件