显然,C++20 有一个新的 std::istream
-相关构造:std::istream_view
. cppreference page on it现在是 stub †。那么,什么是“istream
的 View ”,我可以用它做什么?
† - 好的,从技术上讲,它重定向到一个关于 std::basic_istream_view
的页面那是一个 stub 。
最佳答案
安 std::istream_view<T>
是 范围 ;更具体地说,一个范围形成为 查看 .标准库中的这一补充类似于您在 std::ranges::views
下可能找到的内容。 - 除了它不是任意范围的 View ,而是 std::istream
.
那么什么“查看”适用于 std::istream
?召回 istream
是一个字符流,不是任意的 T
- 您选择的类型元素。将这些字符解析成连续 T
的懒惰应用's 是 istream 的“查看”。即std::istream_view<T>(is)
的第k个元素是您第 k 次运行的结果 is >> t
为 t
类型 T
.
您将使用 std::istream_view
( carefully ) 当您想将适用于范围的代码直接应用于输入数据时 - 而不是首先以更“老派”的方式将输入解析为某个数据结构,然后将该结构作为范围。
其他承担什么std::istream_view
是:
T
的协程s 来自 istream;阅读 this answer有关详细信息(请注意,这是关于 range-v3 中的 istream View ,其中大部分成为标准范围库)。 std::istream_iterator<T>
”的结果。 关于c++ - 什么是 istream_view,什么时候使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65259525/