此处的代码用于创建学生报告卡项目,但在尝试理解时,我们无法从代码中找出以下行的使用和功能。
此:
File.read(reinterpret_cast<char *> (&st), sizeof(student));
和此:
int pos=(-1)*static_cast<int>(sizeof(st));
这是主要代码:
File.read(reinterpret_cast<char *> (&st), sizeof(student));
if(st.retrollno()==n)
{
st.showdata();
cout<<"\n\nPlease Enter The New Details of student"<<endl;
st.getdata();
int pos=(-1)*static_cast<int>(sizeof(st));
File.seekp(pos,ios::cur);
File.write(reinterpret_cast<char *> (&st), sizeof(student));
cout<<"\n\n\t Record Updated";
found=true;
}
答案 0 :(得分:1)
int pos=(-1)*static_cast<int>(sizeof(st));
将unsigned int
类型转换为整数并取消它,以便计算在下一行中向后搜索的偏移量
reinterpret_cast<char *> (&st)
只需将结构上的指针转换为char
上的指针,即可与函数原型兼容。但是相同的指针值被传递给函数。
因此,此代码从文件中重新排列sizeof(st)
个字节并写入新结构,更新旧结构。