首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于二进制读取有关问题

2012-05-20 
关于二进制读取问题以下是一个测试代码,本来建立了一个二进制文件,但把建立过程去掉(上次生成的二进制文件

关于二进制读取问题

以下是一个测试代码,本来建立了一个二进制文件,但把建立过程去掉(上次生成的二进制文件还在,没去掉还可以读取),原来的二进制文件读取时意外中断

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

enum sex{boy,girl};
class my
{
private:
string name;int n;sex mysex;
public:
my(){};
~my(){}
void setName(string str)
{
name=str;
}
void setN(int nn)
{
n=nn;
}
string getName()
{
return name;
}
int getN()
{
return n;
}
void setsex(sex sex)
{
mysex=sex;
}

string getsex()
{
switch(mysex)
{
case boy:
return "我是男孩";
break;
case girl: "我是女孩";
break;
}
}
};

void main()

/*my* m=new my;;
m->setName("我是******");
m->setN(20);
m->setsex(boy);
fstream datfile;
datfile.open("D:\\testFile.dat",ios::out|ios::binary);
datfile.write((char*)&m,sizeof(m));

txtfile.close();
datfile.close();*/ 若注释了则没办法读取,但那二进制文件不是存在了吗


my* mm=new my;
fstream adatfile;
cout<<"dat"<<endl;
adatfile.open("D:\\testFile.dat",ios::in|ios::binary);
if(!adatfile)
{
cout<<"faile to open"<<endl;
exit(0);
}
adatfile.read((char*)&mm,sizeof(mm));
cout<<mm->getName()<<endl<<mm->getN()<<endl<<mm->getsex()<<endl;
adatfile.close();
delete mm/*,m*/;

}


[解决办法]
单步调试找出问题所有
[解决办法]

探讨

单步调试找出问题所有

[解决办法]
推荐使用WinHex软件查看文件或内存中的原始字节内容。

热点排行