c++二进制文件的读取和写入
时间: 2023-09-28 14:08:41 浏览: 48
好的,您可以使用C语言的标准库函数fread()和fwrite()来读取和写入二进制文件。其中,fread()函数用于读取二进制文件数据至内存中的缓冲区,而fwrite()函数用于将内存中的缓冲区数据写入二进制文件中。需要注意的是,在使用时要设置读写的字节数和缓冲区大小,以保证读写操作的正确性和效率。
相关问题
c++用二进制读取和写入dat文件
使用 C++ 读取和写入二进制数据文件(.dat)可以使用流(stream)类来实现。具体步骤如下:
1. 打开文件:使用 std::fstream 类的 open() 函数打开文件,指定文件名和打开模式(输入、输出、二进制等)。
2. 写入数据:使用流对象的 write() 函数将数据写入文件。write() 函数需要传入两个参数:第一个参数是指向要写入的数据的指针,第二个参数是要写入的字节数。
3. 读取数据:使用流对象的 read() 函数从文件中读取数据。read() 函数需要传入两个参数:第一个参数是指向要读取的数据的指针,第二个参数是要读取的字节数。
4. 关闭文件:使用流对象的 close() 函数关闭文件。
下面是一个简单的示例代码,演示如何使用流类读取和写入二进制数据文件:
```c++
#include <iostream>
#include <fstream>
using namespace std;
struct Person {
char name[20];
int age;
};
int main() {
// 打开文件
fstream file("person.dat", ios::binary|ios::in|ios::out);
// 写入数据
Person p1 = {"Tom", 20};
file.write((char*)&p1, sizeof(p1));
// 读取数据
file.seekg(0, ios::beg); // 将文件指针移动到文件开头
Person p2;
file.read((char*)&p2, sizeof(p2));
cout << "Name: " << p2.name << endl;
cout << "Age: " << p2.age << endl;
// 关闭文件
file.close();
return 0;
}
```
在上面的代码中,我们使用了一个结构体 Person 来存储数据。首先,我们创建了一个 fstream 对象来打开文件 "person.dat",并指定了打开模式为二进制输入输出模式。然后,我们使用 write() 函数将一个 Person 对象写入到文件中。接着,我们使用 seekg() 函数将文件指针移动到文件开头,然后使用 read() 函数从文件中读取一个 Person 对象,并将其存储到 p2 变量中。最后,我们输出了读取到的数据,并关闭了文件。
注意,在使用文件流读取和写入二进制数据时,需要使用 char* 类型的指针来强制转换数据类型。此外,还需要使用 seekg() 函数来移动文件指针的位置。
c++二进制文件读写
在C++中,我们可以使用文件流来读写二进制文件。以下是一个简单的示例:
写入二进制文件:
```c++
#include <iostream>
#include <fstream>
int main() {
std::ofstream outfile("data.bin", std::ios::binary);
if (outfile.is_open()) {
int number = 10;
outfile.write(reinterpret_cast<const char*>(&number), sizeof(number));
outfile.close();
} else {
std::cerr << "Unable to open file for writing" << std::endl;
}
return 0;
}
```
首先,我们使用`std::ofstream`来打开一个文件,指定文件名和打开方式`std::ios::binary`。然后,我们使用`write()`函数来写入一个整数。`reinterpret_cast`用于将整数指针强制转换为字符指针,以便在文件中将其写入为字节。最后,我们关闭文件。
读取二进制文件:
```c++
#include <iostream>
#include <fstream>
int main() {
std::ifstream infile("data.bin", std::ios::binary);
if (infile.is_open()) {
int number;
infile.read(reinterpret_cast<char*>(&number), sizeof(number));
std::cout << "Number: " << number << std::endl;
infile.close();
} else {
std::cerr << "Unable to open file for reading" << std::endl;
}
return 0;
}
```
我们使用`std::ifstream`打开文件,指定文件名和打开方式`std::ios::binary`。然后,我们使用`read()`函数来读取整数。`reinterpret_cast`用于将字符指针强制转换为整数指针,以便从文件中读取字节并将其转换为整数。最后,我们关闭文件并输出读取的整数。
需要注意的是,在读写二进制文件时,我们需要注意数据的字节顺序(大端序或小端序),以免在不同的平台上出现问题。