如果在C++中输入的值不是整数,如何重复语句
How To Repeat Statement If Entered Value Is Not An Integer In C++
我是C++的新手,我正在使用Code::Blocks来运行我的代码。。。问题是,我希望用户输入一个年龄的整数值,那么我如何编码以确保程序知道它是否是整数,如果它不是整数则循环?这是代码[][1]
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int age;
string name;
cout << "Welcome To Maverick Academy! nWe Are Pleased To Have New Student Around The Globe. n" << endl;
cout << "What Is Your Name, Newcomer?n";
cin >> name;
cout << "nHello, " << name << ". How Old Are You?n";
cin >> age;
do
{
cout << "Please Enter Your Age In Numeric. n";
} while (cin.fail);
{
cin.clear();
}
cout << "nPlease Choose A Class." << endl;
//printing border
cout << setfill('-') << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << endl;
//printing student record
cout << setfill(' ') << setw(1) << "|" << setw(15) << left << "Classes" << setw(1) << "|" << setw(15) << left << "Advanced" << setw(1) << "|" << setw(5) << endl;
//printing border
cout << setfill('-') << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << endl;
//printing student record
cout << setfill(' ') << setw(1) << "|" << setw(15) << left << "Mage" << setw(1) << "|" << setw(15) << left << "Sorceress" << setw(1) << "|" << setw(5) << endl;
//printing border
cout << setfill('-') << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << endl;
//printing student record`enter code here`
cout << setfill(' ') << setw(1) << "|" << setw(15) << left << "Fighter" << setw(1) << "|" << setw(15) << left << "Warrior" << setw(1) << "|" << endl;
//printing border
cout << setfill('-') << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << endl;
//printing student record
cout << setfill(' ') << setw(1) << "|" << setw(15) << left << "Ninja" << setw(1) << "|" << setw(15) << left << "Assassin" << setw(1) << "|" << setw(5) << endl;
//printing border
cout << setfill('-') << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << endl;
return 0;
}
我很确定问题出在do while
循环中。
int age;
do {
if(cin.fail()){
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), 'n');
}
cout << "Please Enter Your Age In Numeric. n";
cin >> age;
} while(cin.fail());
应该有效。它至少运行一次循环(do)并不断重复(清除cin并提示用户输入),直到cin.fail()为false,这时您就知道输入是有效的。
为了澄清,如果输入无效(例如,输入不适合变量类型),那么cin.fail()将返回true,因此流被破坏(这就是调用cin.clear()很重要的原因)。
同样值得注意的是,cin.fail后面需要括号,因为它是一个方法调用。这可能会让您更深入地了解cin、cin.fail()和cin.clear()是如何工作的。
相关文章:
- 如何反转整数参数包
- 我在c++中遇到了一个奇怪的错误,其中一个计算2个小整数加法的语句溢出到一个长值中
- 将 OR 放入 if 语句会导致 ISO C++禁止指针和整数之间的比较(f 允许)
- 为什么所有可能的整数都"true"在 C++ 的 if 语句内的 long int 范围内,而 0 不是?
- 从用户输入中提取整数的枚举开关语句
- 使用 IF 语句比较两个整数
- C++ to_string函数根据额外打印语句的先见之明,为浮点数和整数转换提供不同的结果
- 条件语句,用于验证事务模块(.cpp)标头中#define(d)整数提供的范围
- 如何查找用户使用 do/while、While 语句或 For 语句输入的几个整数的总和
- 根据队列内容(if 语句)确定数字是实数还是整数
- cython return 语句给出了一个内置方法而不是整数
- 如果语句应该更改整数,但在 printf * 中使用时不会更改
- 如果在C++中输入的值不是整数,如何重复语句
- 如果x和y是两个值分别为1和2的整数。语句 y= - -x--的含义是什么;
- C/C++ 中的 'if' 语句是否将操作数转换为整数?
- c++ SFML整数在if / else语句中不工作
- 在条件语句中指定一个整数
- 如何在C++中的正整数和负整数之间计算IF语句中的bool
- 返回一个整数以确定要显示的 switch 语句
- 使用'if'语句和"<<"时的结果错误,'>>'运算符比较 3 个整数