我无法理解如果(std::cin>>)循环

  • 本文关键字:cin 循环 std 如果 c++
  • 更新时间 :
  • 英文 :


我对编程完全陌生,目前正在自学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之前,您应该始终忽略输入。它可以防止不耐烦的用户读取输入的随机字符。

最新更新