我目前正在学习C ++,并且我被要求制作一个程序,该程序将计算对给定大小的存款支付的利息。其中一个要求是在输入非整数数据时显示错误消息。
但是我无法弄清楚如何检测是否输入了非整数数据。如果有人能提供一个如何解决这个问题的例子,我将不胜感激!
答案 0 :(得分:12)
您无需检查自己。表达式(std::cin >> YourInteger)
计算为bool,当且仅当YourInteger
成功读取时才为真。这导致了成语
int YourInteger;
if (std::cin >> YourInteger) {
std::cout << YourInteger << std::endl;
} else {
std::cout << "Not an integer\n";
}
答案 1 :(得分:0)
您需要确定输入值是否包含非数字字符。也就是说,除了0-9之外的任何东西。
您必须首先将输入作为字符串,然后验证每个数字是否确实是数字。
您可以使用<cctype>
中定义的内置函数isdigit()来迭代字符串并测试每个字符是否为有效数字。如果使用十进制数字,您可能还希望允许使用单个逗号。
答案 2 :(得分:0)
this应该是一个明确的起点。
char* GetInt(char* str, int& n)
{
n = 0;
// skip over all non-digit characters
while(*str && !isdigit(*str) )
++str;
// convert all digits to an integer
while( *str && isdigit(*str) )
{
n = (n * 10) + *str - '0';
++str;
}
return str;
}