删除文本文件C ++的一部分

贝克斯

我有一个名为copynumbers.txt的文本文件,在使用示例时,我需要删除一个数字后的一些数字,这将是一个包含以下内容的文本文件

   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15

每个整数应占用4个字节的空间。

我想删除或删除数字7到15,同时保留1到6,然后将数字30添加到它。

因此,文件将保留1到6并摆脱7到15,然后在那之后我想在30结束。

我的新文件应如下所示

1 2 3 4 5 6 30

我的问题是如何在不覆盖数字1到6的情况下做到这一点?因为当我使用

std::ofstream outfile;
outfile.open ("copynumbers.txt");

它将覆盖所有内容,并在文件中仅保留30

当我使用

ofstream outfile("copynumbers.txt", ios::app);

它将在15之后追加30,但不会删除任何内容。

我的一些代码:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    ofstream outfile("copynumbers.txt", ios::app);

    outfile.seekp(0, outfile.end);

    int position = outfile.tellp();

    cout << position;

    //outfile.seekp(position - 35);

    outfile.seekp(28);
    outfile.write("  30",4);

    outfile.close();    

    return 0;
}
保罗·R

尝试“就地”修改文件通常是一个坏主意-如果出现任何问题,则最终会导致文件损坏或丢失。通常,您会执行以下操作:

  • 打开原始文件进行输入
  • 创建用于输出的临时文件
  • 读取输入文件,处理,写入临时文件
  • 如果成功,则:
    • 删除原始文件
    • 重命名临时文件为原始文件名

除了采用更安全的策略外,这还使修改内容的过程变得更加容易,例如,从文件中“删除”某些内容,而在读取输入时,只需跳过该部分即可(即,不要将该部分写入输出文件中) )。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章