C++ 将对象写入文件 并读取

struct Authinfo
	{
		char  name[100];  //不能定义为string  name   不然程序会奔溃
		                 // 原因:string(包括任何你不可能知道结构的对象——标准里没规定string的具体实现)是不能直接这样保存到文件的。VC里你这么干写入文件的是string里指向真正字符串内容的指针,相当于间接把这个本来不能复制的指针复制给了另一个string,到只两个string析构时发生了重复释放。
		int   age;
	};

    Authinfo authinfo;
	ZeroMemory(&authinfo,sizeof(authinfo));
	string strname="abbccddeeffgg";
	memcpy(authinfo.name,strname.c_str(),strname.length());
	authinfo.age=99;


	char * Filename="D:\\点云\\数据\\测试Cache\\R001A6E34\\C00359EC0\\dddd1.dat";
	FILE *fp=fopen(Filename,"ab+");
	if(!fp)
	{
		return;
	}
	fwrite(&authinfo,sizeof(authinfo),1,fp);
	fclose(fp);


	fp=fopen(Filename,"ab+");
	Authinfo   authinfo2;
	ZeroMemory(&authinfo2,sizeof(authinfo2));
	fread(&authinfo2,sizeof(authinfo2),1,fp);
	string name=authinfo2.name;
	int  age=authinfo2.age;

 

posted on 2014-05-05 14:48  markygis  阅读(2884)  评论(0编辑  收藏  举报