C++判断用户的输入是否只含有整数

这是程序中一段代码
int number;
cout<<"元素个数:";
cin>>number;
while(!cin) //防止输入的不是整数
{ cout<<"输入错误!请重新输入整数:";
cin.clear(); //清除错误标记
cin.ignore(10000,'\n');
cin>>number;
}
如果我输入以数字开头的字符串,比如“6yt”,那么这里就不会提示输入错误,并且读入6,而“yt”则放入了缓存中。我要怎样写,才能判断用户输入的全部字符为整数呢?我还只是初学者,麻烦高手详细解答,有代码最好了,谢谢了

第1个回答  2009-06-18
楼上的想法正确的,不过看你的题目的意思,貌似是缓冲区里面的数据影响了后面的输入,那么,可以这样试试,直接忽略后面的无意义输入,直到输入回车。

#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
char input[255];
char inNext[255];
int iWant;
scanf("%[^\n]", input);
iWant = atoi(input);
cout << iWant << endl;
scanf("%s", inNext);
cout << inNext;
return 0;
}
第2个回答  2009-06-18
先将输入以字符串看待,读入到string中,然后检查string是否都是设法的数字。另外,你的说法也有问题,整数的话可以以正负号开头的。

试试这个。

#include<string>
#include<sstream>
#include<cctype>
#include<iostream>
using namespace std;
int main()
{
string s;
int number;
while (cin >> s){
size_t i;
for (i = 0; i < s.size(); i++)
if (!isdigit(s[i])) break;
if (i == s.size()) break;
}
istringstream iss(s);
iss >> number;
}本回答被提问者采纳
相似回答