处理未知大小的输入

时间:2019-08-28 22:07:02

标签: c++

程序的输入包括两个部分。 输入的第一行是元素数,第二行是所有元素。这是一个示例输入:

5
1 3 23 4 2

有没有一种方法可以处理这种输入而无需使用std::string并在以后将其解析为ints的向量?

1 个答案:

答案 0 :(得分:3)

这听起来像是一场编程比赛或其他类似的设置,您可以在其中相信输入的格式正确。如果是这样,是的,您可以执行此操作而无需通过std::string进行缓冲。这是一个选择:

std::size_t size;
std::cin >> size;

std::vector<int> values;
// Could do values.reserve(size); here if you'd like.

for (std::size_t i = 0; i < size; i++) {
    std::size_t value;
    std::cin >> value;

    values.push_back(value);
}

请注意,流提取运算符operator >>将使用任何空格字符作为定界符,因此元素数量之后的换行符以及数字本身之间的空格字符将很好地用作分隔符。无需单独拉整第二行然后将其解析。

这不会进行错误检查,如果您不信任输入,这将是一个真正的问题。但是,如果可以的话,这应该可以解决问题。