Re: basic_ifstream<unsigned char> не читает файл до конца
От: codelord  
Дата: 26.12.07 13:45
Оценка:
Здравствуйте, Adriano, Вы писали:

A>просто читаю файл:

A>
A>template<class ValueT>
A>void simple_reading(const char* fileName)
A>{
A>    basic_ifstream<ValueT> in;
A>    in.open(fileName,ios::binary);
A>    if ( !in ){
A>        return;
A>    }

A>    basic_string<ValueT> buffer;
A>    buffer.resize(1024*1024*100);

A>    {
A>        size_t offset = 0;
A>        while( !in.eof() ){
A>            in.read(&buffer[0],static_cast<streamsize>( buffer.size() & 0xFFFFFFFF ) ); //правильно я делаю преобразование?
A>            offset += in.gcount();
A>            cout << "\roffset = " << offset;
A>        }
A>        cout << endl;
A>    }
A>    return;
A>}

A>int _tmain(int argc, _TCHAR* argv[])
A>{
A>    if ( argc < 2 ){
A>        return 1;
A>    }
A>    simple_reading<char>(argv[1]);
A>    simple_reading<unsigned char>(argv[1]);
A>    return 0;
A>}
A>


A>Почему в случае с char файл считывается полностью, а в случае с unsigned char где-то после 7гб чтение прекращается, т.к. выставляется флаг eof?

A>размер файла ~12гб
по моему по умолчанию char считается unsigned
поэтому вроде не должно быть разницы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.