我对编程完全陌生,目前正在自学C++。这是我第一天的学习,我目前正在理解循环。
以下是我正在尝试使用和理解的代码。
int start = 0, end = 0;
while(true){
std::cout<<"Input a starting number: ";
if(std::cin>>start){
//PLACEHOLDER TEXT
}else{
std::cout<<"You have entered an incorrect starting number. Please enter again.";
std::cout<<std::endl;
start = 0;
}
}
所以,一旦我输入了一个错误的单词,比如字母表。它打印else-case消息并再次启动while循环,但不会提示我再次输入。它只是在case已经为false的情况下开始,并使用else case继续循环。
我试过在其他情况下设置start=0,所以它是一个整数而不是垃圾数,但运气不好。
为什么会发生这种情况,以及如何使其发挥作用?
std::cin
在尝试将一个字母读取为int后处于失败状态,并且一个字母保留在输入流中。您应该清除std::cin状态,并忽略if之前或else:中的前一个输入
std::cin.clear();
std::cin.ignore();
通常,在输入请求后读取std::cin之前,您应该始终忽略输入。它可以防止不耐烦的用户读取输入的随机字符。