我正在使用cin >> x[0] >> x[1] >> x[2] >> x[3];
等获取输入,例如:
1 2 3 4.
但我的问题是,可能有3个不同的数字(例如,1,2和3)到20个不同的数字,我不知道预先有多少。因为用户可以输入最多20个数字,所以我重复了上面的模式,直到x [19]。我发现程序不会继续,直到它为这些值中的每一个都有输入。
答案 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)