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

用wirte向资料输出一个对象遇到某个对象成员string过长是否会无法输出

2013-09-05 
用wirte向文件输出一个对象遇到某个对象成员string过长是否会无法输出这是一个卡类class DiningCard{priva

用wirte向文件输出一个对象遇到某个对象成员string过长是否会无法输出
这是一个卡类

class DiningCard
{
private:                      //私有成员
double Balance;           //余额

string CardClass;         //卡类别

    string CardNum;           //卡号

string ConsumPassword;    //消费密码

string state;                //挂失情况

string NameOfHolder;      //持卡人姓名

string SexOfHolder;       //性别

string UnitOfHolder;      //单位

public:
    void setBalance(double ba);         //设置余额
double getBalance() const;          //获得余额

    void setCardClass(string cc);       //设置卡类别
string getCardClass() const;        //获得卡类别

    void setCardNum(string cn);         //设置卡号
  string getCardNum() const;          //获得卡号

    void setConsumPassword(string cp);  //设置消费密码
string getConsumPassword() const;   //获得消费密码

    void setNameOfHolder(string noh);   //设置持卡人姓名          
string getNameOfHolder() const;     //获得姓名

    void setSexOfHolder(string soh);    //设置性别
string getSexOfHolder() const;      //获得性别

    void setUnitOfHolder(string uoh);   //设置单位
string getUnitOfHolder() const;     //获得单位

    void setState (string state);            //设置丢失状态
string getState() const;              //获得丢失状态
};


我用ofstream类的write函数向文件输出一个对象
out.open("base",ios_base::app|ios_base::binary);
out.write(reinterpret_cast<char*>(&card),sizeof(DiningCard));


out.close();


当成员UnitOfHolder较短时,打开文件可以看到完整的数据
当成员UnitOfHolder较长时,打开文件发现UnitOfHolder完全没有输出到文件,但其他成员均可以输出到文件
请问应如何修改代码?
[解决办法]
就类似一个链表,能直接把链表本身写进文件吗?
要把链表中的节点一个个写文件,下次读取这些节点的数据,重新生成一个链表。
string对象一样。
能直接memcpy复制的对象,才能直接读写对象本身到二进制文件。

热点排行