Информация об изменениях

Сообщение std::ifstream, MSVC 2012, бага? от 13.02.2015 20:33

Изменено 13.02.2015 20:43 nen777w

Нужно узнать размер файла (как еще кстати это сделать не прибегая к системному API и boost::filesystem) ?
Вот такой код:
uint64_t file_size(const char *path)
{
    std::ifstream in(path, std::ifstream::ate|std::ifstream::binary);
    if(!in.good()) return 0;
    return in.tellg();
}


Если открывать файл размер 10 gb вернёт 0 т.е. сработает условие !in.good(), если убрать std::ifstream::ate файл откроется.
Можно посикать до конца и тогда in.tellg() — вернёт правильный размер.
Интересно почему с std::ifstream::ate на файлах >= 10Gb не работает. Бага? (Если да куда писать?)
Нужно узнать размер файла (как еще кстати это сделать не прибегая к системному API и boost::filesystem, ну кроме банального fopen() и т.д.) ?
Вот такой код:
uint64_t file_size(const char *path)
{
    std::ifstream in(path, std::ifstream::ate|std::ifstream::binary);
    if(!in.good()) return 0;
    return in.tellg();
}


Если открывать файл размер 10 gb вернёт 0 т.е. сработает условие !in.good(), если убрать std::ifstream::ate файл откроется.
Можно посикать до конца и тогда in.tellg() — вернёт правильный размер.
Интересно почему с std::ifstream::ate на файлах >= 10Gb не работает. Бага? (Если да куда писать?)