在 C++ 中将一个文件的内容复制到另一个文件

2023-12-28

我正在使用以下程序尝试将文件 src 的内容复制到 C++ 中的另一个文件 dest。简化的代码如下:

#include <fstream>
using namespace std;
int main()
{
  fstream src("c:\\tplat\test\\secClassMf19.txt", fstream::binary);
  ofstream dest("c:\\tplat\\test\\mf19b.txt", fstream::trunc|fstream::binary);
  dest << src.rdbuf();
  return 0;
}

当我在 Windows 中使用 CODEBLOCKS ide 和 GCC 编译器构建并执行程序时,创建了一个名为“....mf19.txt”的新文件,但没有数据复制到其中,文件大小 = 0kb。我确信“...secClassMf19.txt”中有一些数据。

当我在 Windows Visual C++ 2008 中编译相同的程序时,我遇到了同样的问题。

任何人都可以帮助解释为什么我会出现这种意外行为,更重要的是,如何解决问题?


在使用这些流之前,您需要检查打开文件是否确实成功。此外,事后检查一切是否顺利也没什么坏处。将您的代码更改为此并报告:

int main()
{
    std::fstream src("c:\\tplat\test\\secClassMf19.txt", std::ios::binary);
    if(!src.good())
    {
        std::cerr << "error opening input file\n";
        std::exit(1);
    }
    std::ofstream dest("c:\\tplat\\test\\mf19b.txt", std::ios::trunc|std::ios::binary);
    if(!dest.good())
    {
        std::cerr << "error opening output file\n";
        std::exit(2);
    }
    dest << src.rdbuf();
    if(!src.eof())
        std::cerr << "reading from file failed\n";
    if(!dst.good())
        std::cerr << "writing to file failed\n";
    return 0;
}

我敢打赌你会报告前两项检查之一命中。

如果打开输入文件失败,请尝试使用以下命令打开它std::ios::in|std::ios::binary而不是仅仅std::ios::binary.

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

在 C++ 中将一个文件的内容复制到另一个文件 的相关文章

随机推荐

  • istream读取失败后

    我有一小段代码来读取用户数据 如下所示 include
  • 在 Java 中,如何录制扬声器的声音输出? [复制]

    这个问题在这里已经有答案了 我有一个 Java 应用程序 它从多个来源接收声音 用户的能力之一是将应用程序中发生的情况记录到 AVI 文件中 我想将声音包含在该视频捕获中 如何录制用户会听到的声音 例如所有声音输入混合在一起的结果 我可以弄
  • 如何确定系统上的 Boost 版本?

    有没有一种快速方法可以确定系统上 Boost C 库的版本 增强信息宏 http www boost org doc libs 1 44 0 libs config doc html boost config boost macro ref
  • Windows ISO 8601 时间戳

    我需要将 Windows PowerShell 中的日期转换为 ISO 8601 格式 在 Linux Unix 中没有问题 TZ 0 date d
  • 从 Android 应用程序向 Azure AD 进行 Firebase 身份验证

    我正在尝试将 Microsoft 登录方法添加到我的 Firebase 项目中 希望允许用户使用其 Azure AD 凭据登录我的 Android 应用程序 我已经完成了使用 电子邮件 密码 提供商的所有设置 该提供商运行良好 我不打算访问
  • 扑动|如何将数据添加到 firestore 中的现有文档

    我正在使用 firestore 来存储我的 flutter 应用程序的数据 并且我创建了一个在用户登录后自动在 firestore 中创建文档的功能 现在我希望用户在填写此表单时 数据将添加到用户电子邮件所在的同一文档中 RaisedBut
  • 为什么节点 contains 方法没有捕获对 svg 元素的点击?

    我有一个基本的模态 其 html 结构中有一个 svg 图标 我想检测模式之外的点击 以便我可以将其关闭 执行此操作的代码类似于以下内容 document addEventListener mousedown e gt if modal c
  • SQLite删除查询错误

    delete N from Tbl Nodes N Data Tree DT WHERE N Part DT Part 对于这个命令我收到以下错误 System Data SQLite SQLiteException SQLite erro
  • 本地网络上的Mysql错误10061

    我正在尝试连接到本地服务器的数据库 位于 192 168 0 198 但我收到 10061 错误 当我尝试连接真正的 putty 然后只是一个普通的 mysql 登录 时 它没有给我带来任何问题 mincraft 插件使用以下命令登录数据库
  • CloudKit错误处理-重试逻辑

    我想在我的应用程序中加入出色的 CloudKit 错误处理功能 就像 Apple 希望我们做的那样 我现在想保存并修改一条记录 这是我的基本保存逻辑 func addNewRecord managedObj NSManagedObject
  • requestIdleCallback 和 setImmediate 之间的区别?

    目前有 2 个不同的 API 旨在将任务分解为预定的回调函数 设置立即 https developer mozilla org en US docs Web API Window setImmediate 非标 请求空闲回调 https d
  • 第一次打开浏览器窗口/选项卡后执行 JavaScript 代码

    有没有一种方法可以在浏览器中的窗口或选项卡打开时仅执行一次 JavaScript 代码 然后在该窗口 选项卡的整个生命周期中不再执行 即使导航离开 一种使用方式window sessionStorage像这样 if window sessi
  • 如何对 url 中的视频进行加密并将加密视频保存到设备的 SD 卡

    在我的应用程序中 我必须使用许多视频文件 所有视频的总大小大约为 500 MB 因此 我必须在第一次安装和运行应用程序时决定我在后台下载视频 并在加密该视频后将其保存到设备的 SD 卡上 当使用视频时 我会解密该视频并使用它 我决定这样做是
  • 动态创建 C# 类或对象

    我有这个结构 public class FirstClass public List
  • 所有的 goroutine 都在睡觉——僵局! - - - - 错误

    我想编写三个并发的 go 例程 相互发送整数 现在 我的代码已正确编译 但是在第一次执行后 它给出错误 所有 goroutine 都在睡觉 死锁 我试图找到错误 但无法找到代码逻辑中的任何错误 任何人都可以帮助我找到代码中的错误吗 我的代码
  • 在python中将字符串转换为十六进制

    我有一个脚本调用一个函数 该函数采用十六进制数字作为参数 该参数需要 0x 前缀 数据源是数据库表 存储为字符串 因此返回 0x77 我正在寻找一种从数据库中获取字符串并将其用作带有 0x 前缀的十六进制形式的参数的方法 这有效 addr
  • withFilter 的值不是 Cats IO 中的成员以供理解

    我写了这段代码并且编译得很好 for list List Int lt Future List 1 2 3 yield list size res7 Future Int Future Success 3 但是如果我将此代码转换为 for
  • 在 Notepad++ 中每行末尾添加一个字符 )

    我想添加 字符 右括号 到所有行的末尾 I see CR是每行的结束符号 菜单 gt 视图 gt 显示符号 gt 显示行尾 我尝试更换 r with r在正则表达式模式下但它不起作用 我该怎么做呢 Use 在正则表达式模式下匹配行尾 用 来
  • Maven 中的 SSL 客户端证书

    我使用 maven jaxb22 plugin 生成类 以便我可以调用用 Net 编写的 Web 服务 通常它工作正常 但这次 我只能使用客户端证书通过 HTTPS 访问 WSDL 无法通过 HTTP 访问 我能够让它与 SoapUI 一起
  • 在 C++ 中将一个文件的内容复制到另一个文件

    我正在使用以下程序尝试将文件 src 的内容复制到 C 中的另一个文件 dest 简化的代码如下 include