【问题标题】:How to read a class from binary file in c++ [duplicate]如何在c ++中从二进制文件中读取类[重复]
【发布时间】:2016-02-29 14:24:42
【问题描述】:

我有这段代码应该是

  1. 从用户读取数据到类对象
  2. 将该数据写入二进制文件
  3. 从二进制文件中读取数据
  4. 显示给用户。

int main()
{
    Bahd b;    //Bahd is a class
    cin>>b;    //overloaded insertion operator
    ofstream outfile("Data.bin",ios::out|ios::binary);
    outfile.write(reinterpret_cast<char*>(&b),sizeof(b));
    outfile.close();
    ifstream infile("Data.bin",ios::in|ios::binary);
    Bahd c;
    infile.read(reinterpret_cast<char*>(&c),sizeof(c));
    cout<<c;
}
但是在输入数据后运行程序时出现错误。
*** Error in `./a.out': munmap_chunk(): invalid pointer: 0x00007ffccbfbca50 ***
======= Backtrace: =========
/usr/lib/libc.so.6(+0x71e75)[0x7fdf6d79ae75]
/usr/lib/libc.so.6(+0x777c6)[0x7fdf6d7a07c6]
./a.out[0x401280]
./a.out[0x401156]
/usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7fdf6d749610]
./a.out[0x400e69]
======= Memory map: ========
**more lines here**
Aborted (core dumped)

这是课程

    class Bahd{
    private:
        string name;
        long acc_no;
        long double bal;
    public:
        friend istream& operator >>(istream& src,Bahd& b);
        friend ostream& operator <<(ostream& dest,Bahd& b);
    };

我做错了什么?

【问题讨论】:

    标签: c++ file binaryfiles


    【解决方案1】:

    您不能对 C++ 中的任何重要类进行身份序列化(即假装您正在处理内存中的一些随机字节并移动这些字节)。而且您的班级中有一个std::string,这使它变得不平凡-因为std::string不平凡。

    相反,您应该适当地对其进行序列化。

    【讨论】:

    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2021-09-07
    • 2016-01-20
    • 2013-02-17
    相关资源
    最近更新 更多