← 模式
读取一行值
12345678910111213 | #include <vector> #include <sstream> #include <iterator> int main() { std::istringstream stream{"4 36 72 8"}; std::vector<int> values; std::copy(std::istream_iterator<int>{stream}, std::istream_iterator<int>{}, std::back_inserter(values)); } |
此模式采用 CC0 公共领域贡献 许可。
要求 c++98 或更新版本。
意图
从输入流的单行中读取一个由分隔符分割的值序列到一个标准容器中。
描述
在第 7 行,我们声明了一个 std::istringstream
作为输入流,当然也可以使用任何其他输入流。对于用户输入,你只需将 stream
替换为 std::cin
。类似地,我们使用了 std::vector
作为一个示例容器(第 8 行)。
在第 10-12 行,我们使用 std::copy
算法将 int
从输入流复制到容器中。该算法接受迭代器作为参数。
为了遍历流,我们在第 10 行使用了 std::istream_iterator<int>
类型,它在内部使用 operator>>
来提取 int
。在第 11 行默认构造的 std::istream_iterator<int>
表示流的末尾。
我们在第 12 行使用 std::back_inserter
辅助函数来创建一个输出迭代器,它将对给定的容器执行 push_back
操作来添加元素。