C++ 在跳过循环时 while(9876) { 猜不到; }
输出垃圾邮件“无效”,使我没有时间输入新的猜测。如何使其暂停?您需要筛选数值(请参阅):C++ 在跳过循环时 while(9876) { 猜不到; },c++,c++11,C++,C++11,输出垃圾邮件“无效”,使我没有时间输入新的猜测。如何使其暂停?您需要筛选数值(请参阅): #包括 #包括 使用名称空间std; int main(){ 智力猜测; while(9876){ cout您的cin似乎处于错误状态,因为之前尝试读取“错误”数据,就像尝试将“hello”读入int中一样。如果处于错误状态,则应清除它: #include <iostream> #include <limits> using namespace std; int main() {
#包括
#包括
使用名称空间std;
int main(){
智力猜测;
while(9876){
cout您的cin
似乎处于错误状态,因为之前尝试读取“错误”数据,就像尝试将“hello”读入int
中一样。如果处于错误状态,则应清除它:
#include <iostream>
#include <limits>
using namespace std;
int main() {
int guess;
while (guess<1234 or guess>9876) {
cout << "Invalid" << guess << endl;
cin >> guess;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
while(9876)
{
猜不到;
}
您还需要为std::numeric_limits
guess
添加
,因为它未初始化…您必须在检查guess9876
之前进行cin>
。我只查看了“垃圾邮件”,假设guess将在之前的某个地方初始化。guess
未初始化…@ikh where?在mdsl的答案中是。但在OP的问题和我的答案中,您只能看到相关的while循环。guess
应该在它之前初始化,在您看不到的代码部分。在循环内初始化它没有道理。
#include <iostream>
#include <limits>
using namespace std;
int main() {
int guess;
while (guess<1234 or guess>9876) {
cout << "Invalid" << guess << endl;
cin >> guess;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
while (guess<1234 or guess>9876)
{
cout << "Invalid" << endl;
if (!cin) {
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
cin >> guess;
}