【发布时间】:2017-06-17 08:47:59
【问题描述】:
我有一个std::istream 可以使用。是否有可能以某种方式将其传递给可能会从不同位置寻找和阅读的多个阅读器?
如果不是,如果我将其限制为std::ifstream 的情况怎么办?
【问题讨论】:
-
我认为流是不可复制的。所以传递相同流对象的想法是不可行的。
-
我不知道 range-v3 是否带有这样的功能,但我想为
InputRange写一个像这样的好范围函数也不会太糟糕。如果不出意外,懒惰地循环输入并返回一系列输出副本([1,2,3] -> [[1,2,3], [1,2,3], [1,2,3] ]),数量由参数确定。不幸的是,这种直截了当的解决方案可能并不适合寻求。 -
在同一个
std::istream的多个位置进行搜索将覆盖其他搜索。如果它是一个文件,您可能会为同一个文件打开多个std::ifstreams 并寻找不同的位置;操作系统可能会为您优化访问。