c++ 用文件保存类对象

 
#include <iostream> 
#include <string> 
#include <fstream> 
using namespace std; 

int main() 
{ 
	
	ofstream file; 
        file.open("winIp.txt",ios::binary); 
       //缓存的类型是 unsigned char *,需要类型转换
       file.write((char *)&winServer,sizeof(winServer));  //winServer为类对象
       file.close(); 
	
	
	ifstream Myfile2; 
	file2.open("winIp.txt",ios::binary);  
        //二进制打开,缺省为文本,ios::out,ios::in,文本输入输出用<<,>>    
	file2.read((char *)&winServer,sizeof(winServer)); 
	int num=Myfile2.gcount(); //获取读到文件的大小
        file2.close();

	return 0; 

}


C++ 中,可以将的对象保存到文本文件中,但是需要进行对象的序列化和反序列化操作。对象的序列化是指将对象的状态转换为字节流的过程,而反序列化是指将字节流转换回对象的状态的过程。 可以使用 C++ 标准库中的流操作符(<< 和 >>)来实现对象的序列化和反序列化操作。为了实现对象的序列化和反序列化,需要在中定义相应的流插入和流提取运算符,例如: ``` class MyClass { public: int id; std::string name; friend std::ostream& operator<<(std::ostream& os, const MyClass& obj) { os << obj.id << " " << obj.name; return os; } friend std::istream& operator>>(std::istream& is, MyClass& obj) { is >> obj.id >> obj.name; return is; } }; ``` 在上面的代码中,定义了 MyClass ,并重载了流插入和流提取运算符,以实现对象的序列化和反序列化。在保存对象到文本文件时,可以使用 ofstream 来打开文件流,并使用流插入运算符将对象从内存中写入到文件中,例如: ``` MyClass obj; obj.id = 1; obj.name = "hello"; std::ofstream ofs("data.txt"); ofs << obj; ofs.close(); ``` 在从文本文件中加载对象时,可以使用 ifstream 来打开文件流,并使用流提取运算符将对象从文件中读取到内存中,例如: ``` MyClass obj; std::ifstream ifs("data.txt"); ifs >> obj; ifs.close(); ``` 需要注意的是,在将对象保存到文本文件中时,只能保存对象的状态,而不能保存对象的方法和成员变量的地址等信息。如果需要保存对象的完整信息,可以考虑使用二进制文件或其他数据格式来进行保存
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值