【发布时间】:2017-07-20 02:21:45
【问题描述】:
我的代码有一些问题,这是我遇到问题的代码的一部分。
这段代码的要点是,如果用户输入的不是数字,例如字符p,程序应该要求用户再次输入,这部分有效。
如果用户输入了数字和字符的组合,程序应该要求用户再次输入。例如 n12 或 12n 无效。
字符首先出现的部分,如n12 不会导致问题,但问题出现在数字在前,其他内容在后的情况下,如12n,这是无效的,但我的代码打印出号码12 后说该号码无效。
#include <iostream>
using namespace std;
int main ()
{
int n;
while(1)
{
cout<<"Enter a number, 0 for exit: ";
cin>>n;
if(!cin)
{
cout<<"You didnt enter a valid number\n";
cin.clear();
cin.ignore(1000,'\n');
continue;
}
cout<<"Number is: "<<n<<endl;
if(n==0) return 0;
}
}
代码输出示例:
1°
Enter a number, 0 for exit: 12
Number is: 12
2°
Enter a number, 0 for exit: n
You didnt enter valid number
3°
Enter a number, 0 for exit: n12
You didnt enter valid number
4°
Enter a number, 0 for exit: 12n
Number is: 12
Enter a number, 0 for exit: You didnt enter valid number
编辑:如果可能的话,我想在不包括其他库的情况下解决这个问题。
【问题讨论】:
-
在
cin >> n;之后你可以做一个getline然后检查它是否是一个空字符串 -
这不是“问题”,而是
cin..的明确行为。 -
@nbro:如果您不知道如何实现预期目标,这可能仍然是个问题。
-
@derM 确实,这就是为什么我编辑我的评论以用引号括住单词问题。
-
@noobcoder 你有没有考虑过接受一个答案,如果你的问题当然解决了,那么问题就被标记为已解决?
标签: c++ io numbers iostream cin