C :在(CIN)循环中,有时会忽略循环
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(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();
}
首先,循环时你应该结束什么?您设置循环的方式将永远不会结束。另外,您也不会在循环内部使用Word变量,这是什么意义。如果要循环直到用户输入一些退出代码,则应该看起来像这样:
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循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 在 std::getline 和 std::cin 期间卡在循环中
- C++ cin.ignore() 跳过循环
- 而循环跳过 cin.getline() 对于 C 字符串
- 当输入在带有空格的单行中给出时,cin 如何在 while 循环中工作?
- :CIN 不断打印用户在每次循环后输入的内容
- 输入 ctrl + x 后如何再次 cin (cin<<x) 循环(cin 一个结构)
- cin语句在循环的第三次迭代中被跳过
- 在循环中使用 cin.get() 输入字符串
- C++向量:在循环中使用CIN初始化
- 当我输入一个字母时,cin 输入(输入是一个 int),而不是打印错误一次,它打印正确一次,然后在循环的其余部分打印 i
- 为什么cin.rdbuf()->sbumpc()在循环中只要求我输入一次?
- 在 for 循环中使用后,Cin 被跳过
- 如何在我的代码中修复无穷循环?我认为它跳过了第二个CIN,因此它一直在循环
- C :在(CIN)循环中,有时会忽略循环
- 如果 (!(cin >>变量名称)) 在此循环中
- CIN 到矢量输入循环无限期.为什么
- C++ if(cin>>input) 在 while 循环中无法正常工作
- std::cin 导致无限循环
- 我可以做一个循环,直到“std::cin”在输入缓冲区中看到“”字符