与fstream和指针混淆
|
我想编写一个函数,它接受一个“ 0”,对其进行处理,并将信息填充到我在第二个参数中提供的一个“ 1”中。
我的问题是,当我收到调试错误时,我很困惑如何使用指针和fstream:
访问冲突写入位置
0xcccccccc。
这是主要功能:
int main()
{
keyframe_struct kfstruct;
string ifile = \"filename\";
ifstream fin( ifile, ios::binary );
load_from_keyframe_file( fin, kfstruct );
fin.close();
cout << kfstruct.num_keyframes << endl;
return 0;
}
这是我尝试用于解析二进制文件并在struct kfstruct中填充信息的函数:
struct keyframe_struct
{
int num_views;
int num_keyframes;
vector<keyframe> keyframes;
};
int load_from_keyframe_file( ifstream &fin, keyframe_struct &kfstruct )
{
char keyword[100];
while ( !fin.eof() )
{
fin.getline( keyword, 100, 0 );
if ( strcmp( keyword, \"views\" ) == 0 )
{
fin.read(( char* ) kfstruct.num_views, sizeof( int ) );
}
else if ( strcmp( keyword, \"keyframes\" ) == 0 )
{
fin.read(( char* ) kfstruct.num_keyframes, sizeof( int ) );
}
}
}
你能告诉我我在做什么错吗?我确定我在这里只是个初学者,所以在这里犯了一些大错误,但我仍然不清楚我该怎么做以及我不应该使用指针做什么。
没有找到相关结果
已邀请:
2 个回复
臂哦
[顺便说一句,从维护的角度来看,最好做
。因此,如果类型发生更改,您的代码仍然可以使用。]
臂哦
采用
同样在另一个地方。 否则,您正在写入的地址等于您的int的值的位置。你不要那个您希望将地址转换为“ 8”。您通过\'&\'运算符获取地址。