C++Note文件操作 二进制文件

二进制文件

以二进制的方式对文件进行读写操作

打开方式要指定为  ios::binary

写文件:

二进制方式写文件主要利用流对象调用成员函数 write

函数原型: ostream& write(const char * buffer, int len);

参数解释:字符指针 buffer 指向内存种一段存储空间。 len是读写的字节数

复制代码
 1 #include <iostream>
 2 #include <fstream>
 3 using namespace std;
 4 //二进制文件 写文件
 5 class Person
 6 {
 7 public:
 8     char m_Name[64];//姓名  二进制使用string容易出错 多使用char
 9     int m_Age;//年龄 
10 };
11 void test() 
12 {
13     //1.包含头文件
14     //2.创建流对象
15     //3.打开文件
16     //ofstream ofs;
17     //ofs.open("Person.txt", ios::out | ios::binary);
18     //也可以使用
19     ofstream ofs("Person.txt", ios::out | ios::binary);
20     //4.写文件
21     Person p = { "张三", 18 };
22     ofs.write((const char*)&p,sizeof(Person));//文件乱码
23     //5.关闭文件
24     ofs.close();
25 }
26 int main()
27 {
28     test();
29     system("pause");
30     return 0;
31 }
复制代码

 总结:文件输出流对象,可以通过  write  函数,以二进制方式写数据

读文件:

二进制方式读文件主要利用流对象调用成员函数 read

函数原型: istream& read(char * buffer, int len);

参数解释: 字符指针buffer指向内存种一段存储空间,len是读写的字节数

复制代码
 1 #include <iostream>
 2 #include <fstream>
 3 using namespace std;
 4 //二进制文件 写文件
 5 class Person
 6 {
 7 public:
 8     char m_Name[64];//姓名 
 9     int m_Age;//年龄 
10 };
11 void test() 
12 {
13     //1.包含头文件
14     //2.创建流对象
15     ifstream ifs;
16     //3.打开文件 判断文件是否打开成功
17     ifs.open("Person.txt", ios::in | ios::binary);
18     if (!ifs.is_open())
19     {
20         cout << "文件打开失败" << endl;
21         return;
22     }
23     //4.读文件
24     Person p;
25     ifs.read((char*)&p, sizeof(Person));
26     cout << "姓名:" << p.m_Name << "  年龄:" << p.m_Age << endl;
27     //5.关闭文件
28     ifs.close();
29 }
30 int main()
31 {
32     test();
33     system("pause");
34     return 0;
35 }
复制代码

总结:文件输入流对象 可以通过  read  函数,以二进制方式读数据

posted on   廿陆  阅读(14)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示