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 函数,以二进制方式读数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)