使用ios :: ate重写数据

时间:2014-09-29 12:01:08

标签: c++ file visual-c++

我的任务是使用C ++将精确的位置写入file.txt 因为我的文件是静态的(它不会改变)我决定计算我必须写的curseur的位置。 (我知道这不是最好的想法) 这是我的文件,我必须在'='之后写: enter image description here

很明显,我想覆盖“null”。 但是我不明白为什么“othr”中的“int main”也是过度的!请看下面的内容,以便解决我的问题: enter image description here

我的问题如下:

  • 我该如何避免这种情况?
  • 您是否有其他想法实现上述目标?

这是我的尝试:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
   ofstream monFlux("client.txt",ios::in |  ios::ate);
   if(monFlux)    
{
    monFlux.seekp(61, ios::beg);
    int position = monFlux.tellp(); 

    monFlux<< "DECryptBlockWithPCRYPT(d);";


  }
    else
    {
        cout << "ERROR" << endl;
    }
   system("pause");
   return 0;
}

1 个答案:

答案 0 :(得分:2)

首先,看起来你打开一个输出流来读取(ios::in)是正确的吗?

我认为你不能按照你描述的方式插入字符 你的方法更像是人类在文本编辑器中所做的。另一侧的流对象只允许您访问磁盘上的字节。它没有“选择和替换”文本功能。

我认为这种方法可行:

  1. 打开一个用于读取文件的输入流和一个用于写入文件的输出流。
  2. 将前N个字符直接串流到输出流。
  3. 跳过“null”并插入替换字符串。
  4. 将输入文件的其余部分流式传输到输出流中。
  5. 成功时,将原始文件替换为新文件。