std::ifstream, MSVC 2012, бага?
От: nen777w  
Дата: 13.02.15 20:33
Оценка:
Нужно узнать размер файла (как еще кстати это сделать не прибегая к системному 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 не работает. Бага? (Если да куда писать?)
Отредактировано 13.02.2015 20:43 nen777w . Предыдущая версия . Еще …
Отредактировано 13.02.2015 20:43 nen777w . Предыдущая версия .
Отредактировано 13.02.2015 20:35 nen777w . Предыдущая версия .
Отредактировано 13.02.2015 20:34 nen777w . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.