0

我正在尝试从 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/g/DsouJE

4

1 回答 1

1

istream_range用于operator>>读取元素。operator>>是一个格式化的输入运算符,它会跳过空格,可能会转换行尾等。这就是你得到错误结果的原因。

即使这种方法也会给出正确的结果,但效率很低。它读取整个文件。

于 2018-05-13T13:34:28.430 回答