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