Посмотрите на этот маленький код, он открывает ifstream:
std::ifstream _fcs;
bool openFile(char* path)
{
istream::pos_type pos;
int tmp = 0;
_fcs.open(path, fstream::binary | fstream::in);
if(!_fcs.is_open())
return false;
tmp = 0;
pos = 0x404;
_fcs.seekg(0x404);
pos = _fcs.tellg(); /// return zero
_fcs >> tmp; ///
_fcs.read((char*)&tmp, 4);
return true;
}
У меня две проблемы.
- после поиска, TellG возвращает ноль, и когда я читаю данные, он читает с начала файла.
- оператор >> кажется, не работает. всегда возвращайте ноль!
//// ------------------------------------------- -----
спасибо за внимание. Я нашел сумасшедшее решение, но я запутался!
если я вызываю seekg два раза, это работает, смотрите код:
bool openFile(char* path)
{
istream::pos_type pos;
int tmp;
bool fail;
_fcs.open(path, fstream::binary | fstream::in);
if(!_fcs.is_open())
return false;
_fcs.seekg(0x402);
_fcs.seekg(0x402); /// When it comments, the tellg returns 0. am i crazy!?
fail = _fcs.fail();
assert(!fail);
pos = _fcs.tellg(); /// return 0x402!!!
/// _fcs >> tmp;
_fcs.read((char*)&tmp, 4);
return true;
}
действительно, что случилось?
//// ---------------------------------------------- -
пожалуйста, помогите мне ...
заранее спасибо.