在前一篇文章中,我们详细讨论了文件流的基本使用方法。本文将介绍在 C++ 中如何进行具体的文件操作,重点是文本文件与二进制文件的读写。文件操作是程序设计中非常重要的一部分,掌握文件的读写将使我们的程序能够持久化数据。
文本文件操作
文本文件是最常见的数据存储形式,以可读内容的形式存储信息。在 C++ 中,我们通过文件流来操作文本文件。这里主要使用 std::ifstream
进行读取和 std::ofstream
进行写入。
写入文本文件
我们首先来看如何写入文本文件。下面是一个简单的示例,它创建一个文本文件并写入一些内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <iostream> #include <fstream> #include <string>
int main() { std::ofstream outFile("example.txt");
if (!outFile) { std::cerr << "无法打开文件!" << std::endl; return 1; }
outFile << "Hello, World!" << std::endl; outFile << "这是一个文本文件的示例。" << std::endl;
outFile.close(); std::cout << "文件写入成功!" << std::endl;
return 0; }
|
在上述代码中,我们创建了一个 example.txt
文件,并使用 <<
操作符向文件中写入文本。成功写入后,我们关闭了文件以释放资源。
读取文本文件
接下来,我们来看如何读取文本文件。以下代码展示了如何读取之前创建的文本文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <iostream> #include <fstream> #include <string>
int main() { std::ifstream inFile("example.txt"); std::string line;
if (!inFile) { std::cerr << "无法打开文件!" << std::endl; return 1; }
while (std::getline(inFile, line)) { std::cout << line << std::endl; }
inFile.close(); return 0; }
|
在上述代码中,我们使用 std::getline
函数逐行读取 example.txt
文件中的内容,并输出到控制台。记得在操作完成后关闭文件。
二进制文件操作
二进制文件是以二进制格式存储数据,不直接可读,但可以高效地存储数据。使用二进制文件的主要优点包括:
- 更小的文件大小
- 更快的读写速度
- 可以存储复杂的数据结构
写入二进制文件
我们可以使用 std::ofstream
以二进制模式写入文件。以下是一个写入二进制文件的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <iostream> #include <fstream>
struct Data { int id; double value; };
int main() { std::ofstream outFile("data.bin", std::ios::binary);
if (!outFile) { std::cerr << "无法打开文件!" << std::endl; return 1; }
Data data1 = {1, 13.5}; Data data2 = {2, 24.5};
outFile.write(reinterpret_cast<char*>(&data1), sizeof(data1)); outFile.write(reinterpret_cast<char*>(&data2), sizeof(data2));
outFile.close(); std::cout << "二进制文件写入成功!" << std::endl;
return 0; }
|
在这个示例中,我们定义了一个结构体 Data
,包含 id
和 value
字段。我们使用 write
方法将结构体以二进制格式写入 data.bin
文件。注意 reinterpret_cast<char*>
的使用,这里它将结构体转换为字符指针以进行文件写入。
读取二进制文件
下面的代码展示了如何读取二进制文件中的数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <iostream> #include <fstream>
struct Data { int id; double value; };
int main() { std::ifstream inFile("data.bin", std::ios::binary); Data data;
if (!inFile) { std::cerr << "无法打开文件!" << std::endl; return 1; }
while (inFile.read(reinterpret_cast<char*>(&data), sizeof(data))) { std::cout << "ID: " << data.id << ", Value: " << data.value << std::endl; }
inFile.close(); return 0; }
|
以上代码中,我们同样使用 read
方法从 data.bin
中读取数据。每次读取操作将数据填充至 data
结构体中,直到文件结束。
总结
本文介绍了如何在 C++ 中进行文本文件和二进制文件的基本操作。通过 std::ifstream
和 std::ofstream
,我们可以轻松地实现文件的读写操作。
- 文本文件
- 使用
std::ofstream
写入文本
- 使用
std::ifstream
读取文本
- 二进制文件
- 使用
std::ofstream
写入二进制数据
- 使用
std::ifstream
读取二进制数据
掌握这些基本的文件读写操作后,你就可以在 C++ 中高效地处理文件数据了。希望你能在实际编程中应用这些技巧,期待下篇文章,我们将讨论文件的其他高级操作!