c++ copyfile
作者:野牛程序员:2023-06-28 16:55:27 C++阅读 2735
在C++中,可以使用一些方法来复制文件。以下是其中两种常见的方法:
方法1:使用fstream库
#include <iostream>
#include <fstream>
int main() {
std::ifstream source("source_file.txt", std::ios::binary);
std::ofstream dest("destination_file.txt", std::ios::binary);
// 检查源文件是否成功打开
if (!source) {
std::cerr << "无法打开源文件" << std::endl;
return 1;
}
// 检查目标文件是否成功打开
if (!dest) {
std::cerr << "无法创建目标文件" << std::endl;
return 1;
}
// 逐个字节复制文件内容
char ch;
while (source.get(ch)) {
dest.put(ch);
}
// 关闭文件
source.close();
dest.close();
std::cout << "文件已成功复制" << std::endl;
return 0;
}在上述代码中,使用ifstream和ofstream分别打开源文件和目标文件,然后使用get()和put()函数逐个字节地复制文件内容。最后,记得关闭文件流。
方法2:使用标准库函数
#include <iostream>
#include <fstream>
int main() {
std::ifstream source("source_file.txt", std::ios::binary);
std::ofstream dest("destination_file.txt", std::ios::binary);
// 检查源文件是否成功打开
if (!source) {
std::cerr << "无法打开源文件" << std::endl;
return 1;
}
// 检查目标文件是否成功打开
if (!dest) {
std::cerr << "无法创建目标文件" << std::endl;
return 1;
}
// 获取源文件的大小
source.seekg(0, std::ios::end);
std::streampos fileSize = source.tellg();
source.seekg(0, std::ios::beg);
// 创建缓冲区来存储文件内容
char* buffer = new char[fileSize];
// 读取文件内容到缓冲区
source.read(buffer, fileSize);
// 将缓冲区中的内容写入目标文件
dest.write(buffer, fileSize);
// 关闭文件
source.close();
dest.close();
delete[] buffer;
std::cout << "文件已成功复制" << std::endl;
return 0;
}在上述代码中,我们首先使用seekg()和tellg()函数获取源文件的大小,然后创建一个足够大的缓冲区来存储文件内容。接下来,使用read()函数将源文件内容读取到缓冲区,然后使用write()函数将缓冲区中的内容写入目标文件。最后,记得关闭文件流并释放缓冲区的内存。
无论使用哪种方法,都需要确保源文件能够成功打开,并且目标文件能够成功创建。此外,还应注意文件路径和名称的正确性。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:如何区分是 C++98还是C++11
- 下一篇:C++中:类默认是私有的还是公有的?
