首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ios::ate覆盖写入数据

使用ios::ate覆盖写入数据
EN

Stack Overflow用户
提问于 2014-09-29 12:01:08
回答 1查看 640关注 0票数 1

我的任务是使用file.txt将一个精确的位置写入C++,并且由于我的文件是静态的(不会被更改),所以我决定将curseur的位置数到我必须写的位置。(我知道这不是最好的办法)这是我的文件,我必须写在'=‘之后:

很明显,我想重写“null”,但是我不明白为什么otehr行中的"int main“也是多余的!请注意以下几点,以了解我的问题:

我的问题如下:

  • 我怎么才能避免这种情况?
  • 你有其他的想法来实现上述目标吗?

这是我的尝试:

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-29 12:20:50

首先,看起来您正在打开一个用于读取的输出流(ios::in),对吗?

我不认为你能像你描述的那样插入字符。

您的方法更像是人类在文本编辑器中所做的。另一方面的流对象只允许您访问磁盘上的字节。它没有“选择和替换”文本功能。

我认为这种方法可以奏效:

  1. 打开用于读取文件的输入流和用于写入文件的输出流。
  2. 将第一个N个字符直接流到输出流。
  3. 跳过"null“并插入替换字符串。
  4. 将输入文件的其余部分流到输出流中。
  5. 成功后,将原始文件替换为新文件。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26099457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档