繁体   English   中英

从C ++文件中读取对象

[英]Reading objects from a file in c++

我正在尝试读取我先前写的对象“ CustomerDetails”中的对象(文件中现在只有一个对象)。 read first object后,我的程序总是突然终止。

我在这里做错了什么?

ifstream file;
try
{
  file.open("CustomerDetails.dat",fstream::in|fstream::binary);
  if(file.is_open())
  {
    while(1)
    {
      cout<<"Current Position\n"<<file.tellg()<<endl;
      file.read((char*)this,sizeof(*this));
      if(file.eof()) break;

      cout<<"read first object\n";
      if(!(this->accountNo).compare(accountNumber)&& this->isDeleted==false)
      {
          cout<<"Account Found!!\n Current Balance="<<this->balanceAmount<<endl;
      }              
      cout<<"End of loop loop\n";            
    }
  }
  else
  {
      cout<<"Error opening file.\n";
  }
  file.close();
}
catch(...)
{
  cout<<"Exception Caught\n";
}

本质上,这里的想法仅在数据始终按顺序存储在单个块中的特定情况下才有效。 对于任何甚至稍微复杂的情况,这都是不正确的(特别是如果有字符串,它将永远无法使用)。

该赋值似乎意味着您应该对输出流覆盖>>运算符,然后将类的每个元素独立地写入流中,以注明长度或使用分隔符来指示可变长度数据的结束位置。 正如评论中所建议的那样,这不是一件容易的事。

同样,反序列化代码必须从流中逆转此过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM