- 以二进制形式进行文件读写
- 打开方式需要指定ios::binary
2.1 写二进制文件
使用流对象调用**++成员函数write++**实现写二进制文件
- 函数原型:ostream& write(++const char * buffer++, int len);
- 参数解释:字符指针buffer指向一段内存空间,len是读写的**++字节数++**
其他步骤顺序与文本文件操作的一致 ,请参考上篇《C++文件操作--1 文本文件操作》https://blog.csdn.net/zx870121209/article/details/147992335?spm=1011.2415.3001.5331
cpp
class Person
{
public:
char m_name[10];
int m_age;
};
int main()
{
Person p = {"zhangsan", 18}; // 对象初始化
std::ofstream ofs;// 创建文件流对象
ofs.open("test1.txt", std::ios::out|std::ios::binary);// 打开文件
ofs.write((const char*)&p, sizeof(p));// 以二进制写入文件,数据类型强转
ofs.close();// 关闭文件
return 0;
}
2.2 读二进制文件
使用流对象调用**++成员函数read++**实现写二进制文件
- 函数原型:ostream& read(++char * buffer++, int len);
- 参数解释:字符指针buffer指向一段内存空间,len是读写的**++字节数++**
其他步骤顺序与文本文件操作的一致 ,请参考上篇《C++文件操作--1 文本文件操作》https://blog.csdn.net/zx870121209/article/details/147992335?spm=1011.2415.3001.5331
cpp
class Person
{
public:
char m_name[10];
int m_age;
};
int main()
{
Person p;
std::ifstream ifs; // 创建文件流对象
ifs.open("test1.txt", std::ios::in|std::ios::binary);
if(!ifs.is_open()) // 判断是否打开文件成功
{std::cout << "open failed!" << std::endl;}
ifs.read((char *)&p, sizeof(p)); // 读取二进制数据,数据类型强转
ifs.close();
std::cout << "姓名:" << p.m_name << std::endl;
std::cout << "年龄:" << p.m_age << std::endl;
return 0;
}