在C++中,我们可以使用标准库中的 <fstream>(文件流)来进行文件的读写操作。以下是一些基本的文件读写操作的示例。
读取文件
cpp复制代码
| #include <fstream>  | |
| #include <iostream>  | |
| #include <string>  | |
| int main() {  | |
| std::ifstream file("example.txt"); // 打开文件以进行读取操作  | |
| if (file.is_open()) { // 检查文件是否成功打开  | |
| std::string line;  | |
| while (std::getline(file, line)) { // 逐行读取文件  | |
| std::cout << line << '\n'; // 输出每一行  | |
| }  | |
| file.close(); // 关闭文件  | |
| } else {  | |
| std::cout << "Unable to open file"; // 如果文件打开失败,输出错误信息  | |
| }  | |
| return 0;  | |
| } | 
写入文件
cpp复制代码
| #include <fstream>  | |
| #include <iostream>  | |
| int main() {  | |
| std::ofstream file("example.txt"); // 打开文件以进行写入操作  | |
| if (file.is_open()) { // 检查文件是否成功打开  | |
| file << "Hello, World!"; // 写入字符串到文件  | |
| file.close(); // 关闭文件  | |
| } else {  | |
| std::cout << "Unable to open file"; // 如果文件打开失败,输出错误信息  | |
| }  | |
| return 0;  | |
| } | 
追加内容到文件
如果你希望在文件的末尾追加内容,而不是覆盖原有的内容,你可以使用 std::ofstream 的构造函数,并传入 std::ios::app 标志。
cpp复制代码
| #include <fstream>  | |
| #include <iostream>  | |
| int main() {  | |
| std::ofstream file("example.txt", std::ios::app); // 打开文件以进行追加操作  | |
| if (file.is_open()) { // 检查文件是否成功打开  | |
| file << "This is appended content."; // 追加字符串到文件  | |
| file.close(); // 关闭文件  | |
| } else {  | |
| std::cout << "Unable to open file"; // 如果文件打开失败,输出错误信息  | |
| }  | |
| return 0;  | |
| } | 
注意:在使用完文件后,关闭文件是一个好习惯,因为这可以确保所有的数据都被正确地写入磁盘,并释放系统资源。然而,如果你使用的是C++17或更高版本,你可以使用RAII(Resource Acquisition Is Initialization)原则,通过智能指针(如 std::unique_ptr 或 std::shared_ptr)或作用域退出时自动关闭的封装类(如 std::ofstream 的析构函数)来自动管理文件的关闭。在上面的示例中,当 file 变量离开其作用域时,其析构函数会自动关闭文件。