basic_ifstream<unsigned char> не читает файл до конца
От: Adriano  
Дата: 26.12.07 13:04
Оценка:
просто читаю файл:
template<class ValueT>
void simple_reading(const char* fileName)
{
    basic_ifstream<ValueT> in;
    in.open(fileName,ios::binary);
    if ( !in ){
        return;
    }

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

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

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


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