Я хотел бы написать функцию, которая принимает fstream
, обрабатывает ее и заполняет информацию в struct
, который я предоставляю во втором аргументе.
Моя проблема в том, что я не совсем понимаю, какиспользуйте указатели и потоки при получении ошибок отладки:
Расположение записи о нарушении доступа 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;
}
ИВот функция, которую я пытаюсь использовать для анализа двоичного файла и заполнения информации в структуре 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 ) );
}
}
}
Можете ли вы сказать мне, что я делаю неправильно ?Я уверен, что я делаю здесь огромные ошибки, так как я только начинающий, и я до сих пор не понимаю, что мне делать, а что не делать с указателями.