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

时间:2014-04-09 16:56:11

标签: c++

是否可以使用一个 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.

1 个答案:

答案 0 :(得分:4)

你不能这样做 - 当你写一个字符时,文件中的数据不会“移位”,它会被写下来。

解决这个问题的常用方法如下:

  • 打开临时文件进行写作。在其中写一个点
  • 打开源文件进行阅读。一次读取八个字符
  • 每次从源文件中读取8个字符时,请将它们写入临时文件;附加一个点
  • 阅读完成后,关闭两个文件;移动临时文件代替原文。