如何使用C ++在一行中使用多个整数,而不知道会输入多少?

时间:2015-08-06 08:38:55

标签: c++ cin

我正在使用cin >> x[0] >> x[1] >> x[2] >> x[3];等获取输入,例如:

1 2 3 4.

但我的问题是,可能有3个不同的数字(例如,1,2和3)到20个不同的数字,我不知道预先有多少。因为用户可以输入最多20个数字,所以我重复了上面的模式,直到x [19]。我发现程序不会继续,直到它为这些值中的每一个都有输入。

3 个答案:

答案 0 :(得分:5)

使用std::getline读取整行,然后创建std::istringstream,并在while周期中读取int。如果解析失败,将设置std :: ios_base :: failbit,应该在while条件中检查(通过隐式地将istringstream转换为bool)。成功解析所有输入后,将在离开循环后设置std :: ios_base :: eofbit。

这样的事情:

std::string line;
std::getline(std::cin, line);

std::istringstream input(line);
std::vector<int> result;
int value;
while (input >> value)
{
    result.push_back(value);
}
const bool success = input.eof();

答案 1 :(得分:1)

只需向用户提供一个选项: - 停止输入数字按&#34; Q&#34; ,并在您的代码中检查它。 当用户输入Q时,请继续使用您的代码。

或者您可以要求用户输入他将要插入的数字。

答案 2 :(得分:1)

读取变量时,

cin返回true,因此您可以使用

while (cin>>x[ind++])

the question on while (cin >> )请查看以获取更多信息。