C++文本文件和二进制文件的区别结合代码分析
时间: 2023-08-10 16:40:14 浏览: 170
C语言采用文本方式和二进制方式打开文件的区别分析
5星 · 资源好评率100%
C++中的文本文件和二进制文件也有类似Python的区别。下面是一些代码示例,来说明二者的不同之处。
文本文件的读写:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
// 打开文件
ofstream outfile("textfile.txt");
// 写入数据
outfile << "Hello World!" << endl;
// 关闭文件
outfile.close();
// 打开文件
ifstream infile("textfile.txt");
// 读取数据
string text;
while (getline(infile, text)) {
cout << text << endl;
}
// 关闭文件
infile.close();
return 0;
}
```
在这个示例中,我们使用 `ofstream` 和 `ifstream` 两个类来分别写入和读取文本文件。`ofstream` 用于写入文件,`ifstream` 用于读取文件。在写入文件时,我们可以使用 `<<` 操作符将数据写入文件,这里我们写入了一个字符串 "Hello World!" 和一个换行符。在读取文件时,我们使用 `getline()` 函数来逐行读取文件中的内容,然后输出到控制台上。
二进制文件的读写:
```c++
#include <iostream>
#include <fstream>
using namespace std;
struct Person {
char name[20];
int age;
};
int main() {
// 创建结构体数据
Person person = {"Tom", 23};
// 打开文件
ofstream outfile("binaryfile.bin", ios::out | ios::binary);
// 写入数据
outfile.write(reinterpret_cast<char*>(&person), sizeof(Person));
// 关闭文件
outfile.close();
// 打开文件
ifstream infile("binaryfile.bin", ios::in | ios::binary);
// 读取数据
Person person2;
infile.read(reinterpret_cast<char*>(&person2), sizeof(Person));
// 关闭文件
infile.close();
// 输出数据
cout << "Name: " << person2.name << endl;
cout << "Age: " << person2.age << endl;
return 0;
}
```
在这个示例中,我们使用结构体 `Person` 来存储数据,并将其写入二进制文件。在写入文件时,我们使用 `write()` 函数来写入数据。需要注意的是,由于二进制文件不是文本文件,因此我们需要将结构体的指针转换为字符指针,即使用 `reinterpret_cast<char*>()` 进行类型转换。在读取文件时,我们使用 `read()` 函数来读取数据,同样需要进行类型转换。最后,我们输出读取的数据。
总的来说,文本文件和二进制文件都有各自的优缺点,应根据实际需求来选择使用哪种类型的文件。
阅读全文