C++实战之二进制数据处理与封装
本文主要介绍C++中二进制数据的处理与封装的相关知识,包括二进制文件处理、封装、读写二进制数据等方面。
一、二进制文件处理
- 打开二进制文件
#include <iostream>
#include <fstream>
using namespace std;
int main() {
//打开二进制文件
ifstream fin("test.bin", ios::binary);
if (fin) {
cout << "Open file success." << endl;
} else {
cout << "Open file fail." << endl;
}
fin.close(); //关闭文件
return 0;
}
在打开文件时,需要设置打开模式为ios::binary
,用于指明以二进制模式打开。
- 读取二进制文件
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fin("test.bin", ios::binary);
if (fin) {
// 获取文件大小
fin.seekg(0, ios::end); // 定位到文件结尾
int fileSize = fin.tellg(); // 获取当前位置,即文件大小
fin.seekg(0, ios::beg); // 定位到文件开头
// 读取文件内容
char* buffer = new char[fileSize]; // 用于存储文件内容的缓冲区
fin.read(buffer, fileSize); // 读取文件内容
fin.close(); // 关闭文件
// 处理文件内容
// ...
delete[] buffer; // 释放缓冲区
} else {
cout << "Open file fail." << endl;
}
return 0;
}
首先,需要通过seekg
函数将文件指针定位到文件开头,获取文件大小,再次定位到文件开始位置,然后开辟相应大小的缓冲区读取文件内容。
- 写入二进制文件
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream fout("test.bin", ios::binary);
if (fout) {
// 写入文件内容
int data = 100;
fout.write((char*)&data, sizeof(int)); // 写入整型数据
fout.close(); // 关闭文件
} else {
cout << "Open file fail." << endl;
}
return 0;
}
使用ofstream
类创建文件,并设置打开模式为ios::binary
,将数据写入文件。
二、封装二进制数据
在C++中,struct和class均可用来封装二进制数据。
示例1:封装整型数据
#include <iostream>
#include <fstream>
using namespace std;
class Int {
public:
Int() {}
Int(int v) : value(v) {}
int value;
};
int main() {
ofstream fout("test.bin", ios::binary);
if (fout) {
Int data(100); // 封装数据
fout.write((char*)&data, sizeof(Int)); // 写入数据
fout.close(); // 关闭文件
} else {
cout << "Open file fail." << endl;
}
return 0;
}
定义一个Int类,封装整型数据,并通过write
函数将数据写入文件。
示例2:封装结构体
#include <iostream>
#include <fstream>
using namespace std;
struct Student {
int id;
float score;
};
int main() {
ofstream fout("test.bin", ios::binary);
if (fout) {
Student stu = { 1, 90.5 }; // 封装数据
fout.write((char*)&stu, sizeof(Student)); // 写入数据
fout.close(); // 关闭文件
} else {
cout << "Open file fail." << endl;
}
return 0;
}
定义一个结构体Student,并通过write
函数将数据写入文件。
三、读写二进制数据
使用read
函数和write
函数可实现二进制数据的读写操作。
示例1:读取整型数据
#include <iostream>
#include <fstream>
using namespace std;
class Int {
public:
Int() {}
Int(int v) : value(v) {}
int value;
};
int main() {
ifstream fin("test.bin", ios::binary);
if (fin) {
Int data; // 定义变量
fin.read((char*)&data, sizeof(Int)); // 读取数据
fin.close(); // 关闭文件
cout << data.value << endl; // 输出数据
} else {
cout << "Open file fail." << endl;
}
return 0;
}
使用read
函数读取数据,并将数据存储到变量中,最后输出数据。
示例2:读取结构体数据
#include <iostream>
#include <fstream>
using namespace std;
struct Student {
int id;
float score;
};
int main() {
ifstream fin("test.bin", ios::binary);
if (fin) {
Student stu; // 定义变量
fin.read((char*)&stu, sizeof(Student)); // 读取数据
fin.close(); // 关闭文件
cout << stu.id << " " << stu.score << endl; // 输出数据
} else {
cout << "Open file fail." << endl;
}
return 0;
}
使用read
函数读取数据,并将数据存储到变量中,最后输出数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实战之二进制数据处理与封装 - Python技术站