C++程序 将一个文件复制到另一个文件
复制文件是我们编程中常常需要用到的操作,本文将介绍如何用C++语言将一个文件复制到另一个文件。
打开文件
在读写文件前需要打开文件。C++中用fstream
库进行文件读写操作。使用fstream
打开文件有两种方式:
- 使用
open()
函数打开文件 - 直接使用
fstream
类的构造函数打开文件
下面是两种方法的示例代码:
// 使用open()函数打开文件
#include <fstream>
#include <string>
int main() {
std::string filename = "input.txt";
std::ifstream fin;
fin.open(filename, std::ios::in);
// ...
fin.close();
return 0;
}
// 直接使用构造函数打开文件
#include <fstream>
#include <string>
int main() {
std::string filename = "output.txt";
std::ofstream fout(filename, std::ios::out);
// ...
fout.close();
return 0;
}
上述代码中,filename
即为文件名。std::ios::in
表示以只读模式打开文件,而std::ios::out
则表示以只写模式打开文件。
读取和写入文件
打开文件后,就可进行读写操作了。因为我们要将一个文件复制到另一个文件,所以需要先从源文件中读取数据,然后写入到目标文件中。
读取文件可通过调用fstream
类中的getline()
函数来实现。getline()
函数会读取一行数据并返回一个std::string
类型的对象。如果需要一次性读取全部数据,也可使用read()
函数。
写入文件可通过调用fstream
类中的<<
运算符来实现。<<
运算符会把数据写入到目标文件中。
下面是实现文件复制的代码:
#include <fstream>
#include <string>
int main() {
std::string source_filename = "input.txt";
std::string target_filename = "output.txt";
std::ifstream fin(source_filename, std::ios::in);
std::ofstream fout(target_filename, std::ios::out);
if (fin && fout) {
std::string line;
while (getline(fin, line)) {
fout << line << std::endl;
}
}
fin.close();
fout.close();
return 0;
}
上述代码中,我们先打开源文件和目标文件,然后进行文件复制操作。在复制文件时,我们使用了while循环来逐行读取源文件中的数据,并通过<<
运算符将其写入到目标文件中。最后记得关闭文件。
完整代码
#include <fstream>
#include <string>
int main() {
std::string source_filename = "input.txt";
std::string target_filename = "output.txt";
std::ifstream fin(source_filename, std::ios::in);
std::ofstream fout(target_filename, std::ios::out);
if (fin && fout) {
std::string line;
while (getline(fin, line)) {
fout << line << std::endl;
}
}
fin.close();
fout.close();
return 0;
}
结论
本文介绍了如何用C++语言将一个文件复制到另一个文件。通过本文所述的方法,我们可以在编程中灵活应对各种文件读写操作。