Сообщение std::ifstream, MSVC 2012, бага? от 13.02.2015 20:33
Изменено 13.02.2015 20:43 nen777w
Нужно узнать размер файла (как еще кстати это сделать не прибегая к системному API и boost::filesystem) ?
Вот такой код:
Если открывать файл размер 10 gb вернёт 0 т.е. сработает условие !in.good(), если убрать std::ifstream::ate файл откроется.
Можно посикать до конца и тогда in.tellg() — вернёт правильный размер.
Интересно почему с std::ifstream::ate на файлах >= 10Gb не работает. Бага? (Если да куда писать?)
Вот такой код:
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() и т.д.) ?
Вот такой код:
Если открывать файл размер 10 gb вернёт 0 т.е. сработает условие !in.good(), если убрать std::ifstream::ate файл откроется.
Можно посикать до конца и тогда in.tellg() — вернёт правильный размер.
Интересно почему с std::ifstream::ate на файлах >= 10Gb не работает. Бага? (Если да куда писать?)
Вот такой код:
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 не работает. Бага? (Если да куда писать?)