使用for循环在同一文本文件中读取和写入

Reading and writing in the same text file using a for loop

本文关键字:读取 文件 文本 循环 for 使用      更新时间:2023-10-16

是否可以使用一个for循环在文本文件中读取和写入?我想在文本的零位置和每8个字符之后打印出符号.。这是我的代码,但它不起作用:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    fstream file("MNMN.txt", ios::out | ios::in );
    string content;
    int i;
    while(file >> content)
    {
        for (size_t i = 0; i < content.size(); i+=8)
        {
            file<<".";
            break;
        }
    }
    return 0;
}

我的文本文件中的dDta是:

ABCDEFGHIJKLMNOP

我希望它变成:

.ABCDEFGH.IJKLMNOP.

你不能这样做——当你写一个字符时,文件中的数据不会"移位",它会被重写。

解决这一问题的常见方法如下:

  • 打开一个临时文件进行写入。在上面写一个点
  • 打开源文件进行读取。一次读八个字
  • 每次从源文件中读取八个字符时,将它们写入临时文件;附加一个点
  • 读取完成后,关闭两个文件;将临时文件移到原始文件的位置