我尝试从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);但是,距离函数似乎返回了错误的大小。为什么?
发布于 2018-05-13 21:34:28
istream_range使用operator>>读取元素。operator>>是一个格式化的输入操作符,它跳过空格,可以转换行尾等等,这就是为什么你会得到错误的结果。
即使这种方法可以给出正确的结果,它的效率也非常低。它读取整个文件。
https://stackoverflow.com/questions/50087511
复制相似问题