读书人

读取数字,该怎么处理

发布时间: 2012-03-28 15:40:03 作者: rapoo

读取数字
怎么从命令行读取10个数字,要正确处理输入的不是数字,识别正负号。

[解决办法]
#include <iostream>
#include <cmath>
#include <stdio.h>
using namespace std;
int main(){
const int length = 3;
int array[length];
for (int i = 0; i < length;) {
char str[10];
cout < < "Please input a number " < < endl;
cin > > str;

bool isDigit = true; // 默认输入的是数字
int loop = 0;
if ( '- ' == str[0] || '+ ' == str[0]) { // 为了接收负数和带正好号数字。
loop++;
}
for (; str[loop] != '\0 '; loop++) {
if (!isdigit(str[loop])) {
isDigit = false;
cout < < str < < " is not a number, please input again. " < < endl;
break; // 不是数字时,跳出循环,请求再输一次。
}
}

if (isDigit) {
array[i++] = atoi(str);
}
}

cout < < "-------------------------------------------- " < < endl;
for (int i = 0; i < length; i++) {
cout < < array[i] < < endl;
}

return 0;
}

[解决办法]
以输入整数为例:

#include <string>
#include <iostream>
#include <cstdlib>
#include <cstdio>

using namespace std;

int main(int argc, char* argv[])
{
int arr[10], i;
string tmp, pum( "+-0123456789 ");

for(i=0; i <10; )
{
cout < < "Input NO. " < <i+1 < < " num: ";
cin> > tmp; //读取string
if (tmp.find_first_not_of(pum) == string::npos)
{ //如果输入是合法的
arr[i++] = atoi(tmp.c_str()); //转化为数值
}
else //否则提示重新输入
{
cout < < "Input Error! Again: " < <endl;
}
}

cout < < "The numbers are: " < <endl;
for (i=0; i <10; i++)
cout < <arr[i] < < " ";
return 0;
}

读书人网 >C++

热点推荐