我无法从文件中读取

时间:2015-07-30 20:06:30

标签: c++ oop file-handling

我的问题是每当我尝试从文件中读取名称和卷号时,它只读取文件中的卷号,请帮我解决问题。我已经在下面给出了我的代码。问题只发生在我尝试从一个类写入文件并从另一个类读取时。

BeanUtils.copyProperties

1 个答案:

答案 0 :(得分:3)

您不能仅仅通过将其用作内存blob来读取/写入c ++中的任何对象。这只适用于POD,只有当POD没有任何指针时。您必须按字段实现读/写字段,如果是int,您可以使用您选择的方法,但不能使用std::string。例如,您可以存储字符串的数据大小标记,然后存储实际数据,或者您可以存储零填充的固定内存块 - 这取决于您。 例如(省略错误处理):

void A::store( std::ostream &out )
{
    int len = name.length();
    out.write( (const char *)&len, sizeof( len ) );
    out.write( name.c_str(), len );
    out.write( (const char *)&rollno, sizeof( rollno ) );
}

void A::load( std::istream &in )
{
    int len = 0;
    in.read( (char *)&len, sizeof( len ) );
    name.resize( len );
    std::copy_n( std::istream_iterator<char>( in ), len, name.begin() );
    in.read( (char *)&rollno, sizeof( rollno ) );
}

void B::enter()
{
    A a;
    a.setdata();
    ofstream file("aa.txt",ios::out);
    a.store( file );
}