Как получить размер файла из диапазона istream_range диапазона v3? - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь получить значение размера файла из range-v3, как это.

std::ifstream i("test.bin", std::ios::binary | std::ios::in);
auto rng = ranges::istream_range<unsigned char>(i);
std::cout << ranges::distance(rng);

Однако кажется, что из функции расстояния возвращается неправильный размер. Почему?

godbolt.org / г / DsouJE

1 Ответ

0 голосов
/ 13 мая 2018

istream_range использует operator>> для чтения элементов. operator>> - это форматированный оператор ввода, он пропускает пробелы, может преобразовывать окончания строк и т. Д. Именно поэтому вы получаете неправильные результаты.

И даже этот метод даст правильные результаты, он очень неэффективен. Читает весь файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...