删除部分文本文件 C++

2023-12-28

我有一个名为 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;
}

尝试“就地”修改文件通常是一个坏主意 - 如果出现任何问题,那么您最终会得到损坏或丢失的文件。通常你会做这样的事情:

  • 打开原始文件进行输入
  • 创建临时文件用于输出
  • 读取输入文件、处理、写入临时文件
  • if successful then:
    • 删除原文件
    • 将临时文件重命名为原始文件名

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除部分文本文件 C++ 的相关文章

随机推荐

  • 使用数组下标运算符访问结构成员

    假设有一个类型 T 和一个仅包含 T 类型的统一元素的结构 struct Foo T one T two T three 我想通过以下方式访问它们 struct Foo T one T two T three T operator int
  • 如何使用简单的安装后脚本扩展 distutils?

    安装模块和程序后 我需要运行一个简单的脚本 我在寻找有关如何执行此操作的直接文档时遇到了一些麻烦 看来我需要继承 distutils command install 重写一些方法并将此对象添加到安装脚本中 但具体细节有点模糊 对于这样一个简
  • 更改 Python Matplotlib 中颜色条的颜色

    我有一个代码 可以为我提供预测值与实际值作为浓度函数的散点图 数据是从 Excel csv 电子表格中提取的 这是代码 import matplotlib pyplot as plt from numpy import loadtxt da
  • TSQL 解析带有 4 个分隔符的字符串

    我正在尝试解析这个字符串 200 50 电子邮件受保护 cdn cgi l email protection 09 23 2016 07 00 00 分为 5 栏 我感到很沮丧 分隔符是管道 这些字段不固定 所以我需要使用 charinde
  • Android 2.1 以编程方式卸载 SDCard

    我有一个应用程序 它将重要数据写入 SDCard 并使用 AES 对其进行加密 稍后将由桌面应用程序使用 我注意到 如果我不从 设置 菜单中卸载 SDCard 有时文件根本不会写入 或者已损坏 在 Android 2 1 中是否可以通过编程
  • window.location.href 在 IE 11 中不起作用

    我正在使用 Jquery Ajax 作为登录表单 ajax 成功后 我使用重定向页面window location href test php 这在 Chrome firefox 和 IE9 中工作正常 但在 IE 11 中 它不起作用 我
  • Jetpack compose NavHost 防止重组屏幕

    正如你所看到的 这就是我使用 MaterialBottomNavigation 实现 NavHost 的方式 我在两者上都有很多项目Messages and Feeds屏幕 当我在两个屏幕之间导航时 它们会自动重新组合 但我不想因为那里有太
  • Bootstrap 跨度和列之间有什么区别

    我使用引导程序 但试图理解跨度和列之间的区别 example div class span4 div or div class col md 4 div 他们之间有什么区别或者他们做同样的事情 div class span4 div 是旧的
  • session_start() 有关非法字符、空会话 ID 和失败会话的问题

    所以 我意识到这是一个重复的问题然而 这显然是一个错误 而这篇文章的原始帖子已经有 5 年历史了 但也有人说这是一次恶意攻击 会话 ID 太长或包含非法字符 有效字符为 a z A Z 0 9 和 https stackoverflow c
  • DotNet 核心设置失败

    在我的 Windows 10 笔记本电脑上安装 DotNet Core 时 DotNetCore 1 0 0 RC2 VS2015Tools Preview1 运行时包安装失败 我从安装日志文件中发现了一些错误信息 网络开发工具信息 037
  • 为什么kafka集群中的单节点多broker不是首选?

    我正在尝试将卡夫卡实施到生产中 想知道为什么单节点 多代理的 kafka 实例不是首选 很少有人建议 如果在单个节点上使用多个代理 则应该为它们分配单独的磁盘空间 但这样做的原因尚不清楚 有人可以解释一下单个代理与多个代理 kafka 实例
  • libjpeg 和 .Net jpeg 编解码器在单色数据上真的有很大差异吗?

    我处理大量单色图像数据 今天早上我注意到 libjpeg 和 Net jpeg 编解码器处理单色数据的方式似乎存在显着差异 看起来使用 libjpeg 以任何质量设置保存并使用默认 Net jpeg 编解码器打开的单色图像实际上仅加载 16
  • 两个相同的字符串可以是 C# 中的两个单独的实例吗?

    在 C 中 字符串是驻留的 也就是说 如果我创建字符串foobar当第二次使用它时 C 在内存中只会有一个字符串实例 虽然我有两个引用 但它们都将指向同一个字符串实例 这就是 C 中字符串必须不可变的原因之一 现在 我的问题是 是否有可能以
  • 是否有与 System.Windows.Forms.Screen 等效的 WPF?

    我正在尝试创建一个包含整个桌面工作区域的 WPF 窗口 在 WinForms 中 我将通过获取所有边界的并集来做到这一点System Windows Forms Screen AllScreens 是否有等效类型或其他机制来获取 WPF 中
  • 如何立即取消卷曲操作?

    我在用着libcurl http curl haxx se libcurl 在 C 中 我正在调用curl easy perform在与我的用户界面分开的线程中使用增强线程 http www boost org doc libs 1 43
  • 如何打印矩阵的所有列

    我有一个Matrix总共包含 5 列 我想要做的是打印所有列Matrix不仅仅是前 2 个 如下所示 val V Matrix svd V The V factor is a local dense matrix println V 给出以
  • iOS 为什么将工具栏间隙移至键盘

    我想出了如何使用出现的键盘移动带有按钮和文本字段的工具栏 void liftMainViewWhenKeybordAppears NSNotification aNotification NSDictionary userInfo aNot
  • 分布式源代码控制 - 推送单个变更集

    正在解决一个棘手的问题 希望得到社区的一些帮助 基本上 我们的开发团队分为两个团队 比如说 红色 和 蓝色 3 repos 1 大师2 红色 gt gt 大师的克隆3 蓝色 gt gt 大师的克隆 每个开发人员都在他们工作的本地计算机上克隆
  • 获取 GNU makefile 中最后一个单词之前的单词

    我需要从最后一个之前提取单词 MAKEFILE LIST 到目前为止 我想不出比这种怪物更好的东西了 LIST a b c LAST WORD INDEX words LIST BEFORE LAST word shell echo LAS
  • 删除部分文本文件 C++

    我有一个名为 copynumbers txt 的文本文件 我需要在使用时删除数字后面的一些数字示例将是一个包含以下内容的文本文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 每个整数应占用 4 个字节空间 我想删