← 模式

读取一行值

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 操作来添加元素。

贡献者

  • Joseph Mansfield

最后更新

2017年12月9日

来源

在 GitHub 上 Fork 此模式

分享