c++ 二进制保存文件

本文介绍了一个简单的C++程序,该程序定义了一个名为Stu的类,并演示了如何实例化此类以及如何将实例化后的对象写入文件和从文件中读取对象的过程。文中还涉及到了字符指针的使用以及类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


class Stu {
	int age;
	char* address;
	std::string name;
public:
	Stu() {
	}
	Stu(int _age, char* _address, std::string _name) :
			age(_age), address(_address), name(_name) {
	}
	Stu(int _age, std::string _name) :
			age(_age), name(_name) {
	}
	void show() {
		using namespace std;
		cout << "age:" << age << ",address:" << address << ",name:" << name
				<< endl;

	}
};
int main() {
	const char* fileName = "D://test.txt";
	const char* _address = "D://test.txt";
	char _address1[80] = "D://test.txt";
	ofstream f1(fileName, ios::binary);
	Stu st1(12,const_cast<char*>(_address1), "abc");
	f1.write((char*) &st1, sizeof(st1));
	f1.close();
	ifstream f2(fileName, ios::binary);
	Stu st2;
	f2.read((char*) &st2, sizeof(st2));
	st2.show();
	return 0;

}


(char*) &st1  对象的地址转换成char*















### C++二进制文件的存储方法 #### 使用 `std::ofstream` 和 `std::ifstream` 为了在 C++ 中执行二进制文件的操作,可以利用标准库中的 `std::ofstream` 进行写入以及 `std::ifstream` 来读取数据。下面展示了一个简单的例子来说明如何创建并写入一个二进制文件。 ```cpp #include <fstream> #include <iostream> int main() { int data[] = {1, 2, 3, 4, 5}; // 要保存的数据数组 /// 创建一个二进制文件输出流,使用二进制模式 std::ofstream outFile("data.bin", std::ios::binary); if (outFile.is_open()) { // 将整型数组的内容作为原始字节序列写入文件 outFile.write(reinterpret_cast<char*>(data), sizeof(data)); // 关闭文件 outFile.close(); std::cout << "Data written successfully." << std::endl; } else { std::cerr << "Unable to open file for writing." << std::endl; } } ``` 这段代码展示了怎样通过指定 `std::ios::binary` 参数以二进制方式打开文件,并调用成员函数 `.write()` 向其中写入数据[^1]。 对于从二进制文件中读回这些数值,则可以通过如下所示的方式实现: ```cpp #include <fstream> #include <iostream> int main() { int readData[5]; // 准备接收读取的数据 /// 打开之前创建的二进制文件用于读取 std::ifstream inFile("data.bin", std::ios::binary); if (inFile.is_open()) { // 从文件中读取相同大小的字节数组至readData变量 inFile.read(reinterpret_cast<char*>(readData), sizeof(readData)); // 输出读取的结果验证正确性 for(int i : readData){ std::cout << i << ' '; } // 关闭文件 inFile.close(); std::cout << "\nData read successfully." << std::endl; } else { std::cerr << "Unable to open file for reading." << std::endl; } } ``` 此部分程序同样指定了 `std::ios::binary` 标志位确保按照二进制格式处理输入流,并且采用了 `.read()` 成员函数完成实际的数据加载过程。 当涉及到更复杂的结构体或者其他类型的对象时,也可以采用类似的思路来进行持久化操作;只需注意要保持写出和读入顺序一致即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值