[英]C++: in while(cin) loop, sometimes the loop is ignored
在我的代码中,我尝试创建一个循环,但是有时在获得输入后,整个循环都会被忽略。
这是循环:
while(std::cin >> word){
std::cin.clear();
qType = (rand()%2) + 1;
letter = (rand()%26) + 1;
if(qType == 1){
std::cout << letter << std::endl;
}else if(qType == 2){
std::cout << Letters[letter] << std::endl;
}
}
当我编写输入内容时,循环的前几次会成功输出一个字母或其对应的数字,但不久之后,它将停止输出。 我发现有类似问题的人,但是对他们来说,解决方案是添加一个cin.clear();。 函数,我先将其添加到末尾,然后再添加到开始,但这并不能解决问题。
首先,while循环的结尾应该是什么? 建立循环的方式将永远不会结束。 另外,您不会在循环内的任何地方使用单词变量,所以它的意义是什么。 如果要循环播放直到用户输入一些退出代码,它应该如下所示:
std::string word;
while (word != "exit") {
std::cin >> word;
// your code
}
尝试这个
while(std::cin >> word && word != '\n'){
std::cin.clear();
qType = (rand()%2) + 1;
letter = (rand()%26) + 1;
if(qType == 1){
std::cout << letter << std::endl;
}else if(qType == 2){
std::cout << Letters[letter] << std::endl;
}
}
首先,您没有给出终止条件,所以也许这段代码对您有用...
while(word!="exit"){
cin >> word;
qType = (rand()%2) + 1;
letter = (rand()%26) + 1;
if(qType == 1){
cout << letter << std::endl;
}else if(qType == 2){
cout << Letters[letter] << std::endl;
}
cin.clear();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.