我的问题是每当我尝试从文件中读取名称和卷号时,它只读取文件中的卷号,请帮我解决问题。我已经在下面给出了我的代码。问题只发生在我尝试从一个类写入文件并从另一个类读取时。
BeanUtils.copyProperties
答案 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 );
}