携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第13天,点击查看活动详情
3.二进制写文件的步骤
- 1.包含头文件
- 2.创建流对象
- 3.打开文件 也可以在创建流对象的时候就确定询问的方式。
- 4.写文件
- 5.关闭文件
4.代码举例
#include<iostream>
#include <fstream>
#include <string>
using namespace std;
class Sylvia
{
public:
char S_Name[64];
int S_Age;
};
//二进制文件 写文件
void h()
{
//1、包含头文件
//2、创建输出流对象
ofstream ofs("h.txt", ios::out | ios::binary);
//3、打开文件
//ofs.open("person.txt", ios::out | ios::binary);
Sylvia S= { "道枝骏佑" , 20 };
//4、写文件
ofs.write((const char *)&S, sizeof(S));
//5、关闭文件
ofs.close();
}
int main() {
h();
system("pause");
return 0;
}
输出:
请按任意键继续. . .
总结:
- 文件输出流对象 可以通过write函数,以二进制方式写数据
1.读文件
二进制方式读文件主要利用流对象调用成员函数read
函数原型:istream& read(char *buffer,int len);
参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数 步骤:
- 1.包含头文件
- 2.创建流对象
- 3.打开文件 判断文件是否打开成功 也可以在创建流对象的时候就确定询问的方式。
- 4.读文件
- 5.关闭文件
2.代码举例
#include<iostream>
#include <fstream>
#include <string>
using namespace std;
class Sylvia
{
public:
char S_Name[64];
int S_Age;
};
//二进制文件 写文件
void h()
{
//1、包含头文件
//2、创建输出流对象
ifstream ifs("h.txt", ios::in | ios::binary);
//3、打开文件
//ofs.open("person.txt", ios::out | ios::binary);
if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
return;
}
else if (ifs.is_open())
{
cout << "文件打开成功" << endl;
}
Sylvia h;
//4、写文件
ifs.read((char *)&h, sizeof(h));
cout << "Sylvia的中文名字是:" << h.S_Name << " Sylvia的年龄是: " << h.S_Age << endl;
//5、关闭文件
ifs.close();
}
int main() {
h();
system("pause");
return 0;
}
输出:
文件打开成功 Sylvia的中文名字是:道枝骏佑 Sylvia的年龄是: 20 请按任意键继续. . .
结论:
- 文件输入流对象 可以通过read函数,以二进制方式读数据