要将一个文件的内容完整复制到另一个文件,C++ 提供了多种方法,最常用的是使用 文件流(fstream) 逐字节或按块读取并写入。下面介绍一种简单、可靠且通用的做法。
使用 ifstream 和 ofstream 逐字节复制这是最基本的方式,适合理解文件操作流程:
- 用 std::ifstream 打开源文件进行读取
- 用 std::ofstream 创建或打开目标文件进行写入
- 逐字节读取并写入,直到文件结束
示例代码:

全面的AI聚合平台,一站式访问所有顶级AI模型


#include <iostream> #include <fstream> int main() { std::ifstream src("source.txt", std::ios::binary); std::ofstream dest("destination.txt", std::ios::binary); if (!src || !dest) { std::cerr << "无法打开文件!\n"; return 1; } char byte; while (src.get(byte)) { dest.put(byte); } src.close(); dest.close(); std::cout << "文件复制完成。\n"; return 0; }使用缓冲区批量复制(更高效)
对于大文件,逐字节复制效率较低。可以使用固定大小的缓冲区一次读取多个字节,显著提升速度。
示例代码:

全面的AI聚合平台,一站式访问所有顶级AI模型


#include <iostream> #include <fstream> int main() { std::ifstream src("source.txt", std::ios::binary); std::ofstream dest("destination.txt", std::ios::binary); if (!src || !dest) { std::cerr << "无法打开文件!\n"; return 1; } char buffer[4096]; while (src.read(buffer, sizeof(buffer))) { dest.write(buffer, src.gcount()); } // 写入最后可能不足缓冲区大小的部分 dest.write(buffer, src.gcount()); src.close(); dest.close(); std::cout << "文件复制完成。\n"; return 0; }使用 C++17 的 filesystem(仅复制操作)
如果你使用的是 C++17 或更高版本,可以直接使用 std::filesystem::copy_file,这是最简洁的方法。
示例代码:

全面的AI聚合平台,一站式访问所有顶级AI模型


#include <iostream> #include <filesystem> int main() { try { std::filesystem::copy_file("source.txt", "destination.txt"); std::cout << "文件复制完成。\n"; } catch (const std::filesystem::filesystem_error& e) { std::cerr << "复制失败:" << e.what() << "\n"; } return 0; }
这种方法简洁安全,推荐在支持 C++17 的项目中使用。
基本上就这些。选择哪种方式取决于你的编译器支持和性能需求。手动流操作更灵活,filesystem 更方便。注意始终检查文件是否成功打开,避免静默失败。
以上就是C++如何将一个文件的内容完整地复制到另一个文件的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: c++ ai ios Filesystem ofstream ifstream fstream 大家都在看: C++如何使用模板实现迭代器类 C++如何处理复合对象中的嵌套元素 C++内存模型与编译器优化理解 C++如何使用ofstream和ifstream组合操作文件 C++循环与算法优化提高程序执行效率
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。