首页 > 解决方案 > 在输入字母之前,我们如何才能进行数字输入?

问题描述

cout << "Enter the numbers to be stored (end with a letter): "; 
cin >> number;
while(!(cin.fail())){
    numbers.push_back(number);
    cin >> number;
}
for(int i = 0; i < numbers.size(); i++){
    node->insertKey(numbers.at(i));
}
int search;
cout << "Which number do you want to look up? ";
cin >> search;

我想从用户输入中获取数字,直到用户输入一个字母。

此后,我想接受另一个用户输入。我的输出工作正常。所以当我输入一个字母时,它会停止。但它不要求第二个输入。我怎样才能解决这个问题?

标签: c++input

解决方案


最好先这样做:

while (cin >> number)
    numbers.push_back(number);

如果他们在任何有效数字之前键入一个字符,则上面会留空vector,而您的原始代码会将一个无意义的数字推到vector.

然后,如果他们输入了一个字母,则cin流将被置于错误状态并且仍然具有该字符输入,您将希望摆脱它:

// clear stream errors
cin.clear();
// actually get rid of the line with the character on it...
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

然后,您可以继续执行 for 循环并流式传输到search.


推荐阅读