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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| #include <fstream>
struct Record {
int id;
char name[50];
double score;
};
// 写入二进制文件
void writeBinaryFile() {
std::ofstream outFile("data.bin", std::ios::binary);
if (outFile.is_open()) {
Record record = {1, "John", 95.5};
outFile.write(reinterpret_cast<char*>(&record), sizeof(Record));
outFile.close();
}
}
// 读取二进制文件
void readBinaryFile() {
std::ifstream inFile("data.bin", std::ios::binary);
if (inFile.is_open()) {
Record record;
inFile.read(reinterpret_cast<char*>(&record), sizeof(Record));
std::cout << "ID: " << record.id << "\n"
<< "Name: " << record.name << "\n"
<< "Score: " << record.score << "\n";
inFile.close();
}
}
// 随机访问
void randomAccess() {
std::fstream file("data.bin", std::ios::in | std::ios::out | std::ios::binary);
if (file.is_open()) {
// 移动到第二条记录
file.seekg(sizeof(Record), std::ios::beg);
Record record;
file.read(reinterpret_cast<char*>(&record), sizeof(Record));
// 移动到文件末尾
file.seekp(0, std::ios::end);
file.close();
}
}
|