回 帖 发 新 帖 刷新版面

主题:vc++新手的一个问题

我想问一下如何才能判断所输入数据的类型,就是如何所输入的数据是否为整型还是字符型,然后根据判断后再进行后面程序的运行。希望高手们能帮我解答,这个问题我想了好几天了,上次去问老师,他也没有想出办法。(最好把程序的代码也写下)多谢了![em2]

回复列表 (共7个回复)

沙发

你可以把问题描述的清楚一点吗?一般来讲你读入到什么类型的数据里,就是什么类型的!

板凳

例如在这个简单的程序里:
#include<iostream>
using namespace std;
void main()
{
int m,n;
cout<<"请输入一个整数"<<endl;
cin>>m;
n=m+2;
cout<<'n='<<n<<endl;
}
我想添加一个语句判断所输入的是否是整数。如果不是,就输出错误,然后再重新输入。不知道这个语句该怎么写?

3 楼

对于你需要判断得条件如果只有整形和字符型得话,sizeof函数可以帮助你,因为整形和字符型在 内存中得大小不一样,一个站1字节,一个站4字节,所以如果要判断的话:
cout<<"请输入一个整数"<<endl;
cin>>m;

if (sizeof(m) == 4)
{
    ......
}

else if (sizeof(m) == 1)
{
    ......
}

4 楼


    好像还是不行啊!这下面是我修改后的程序:
#include<iostream>
using namespace std;
void main()
{
int m,n;

cout<<"请输入一个整数"<<endl;

cin>>m;
if(sizeof(m)==4)
{
n=m+2;
cout<<'n='<<n<<endl;
}
else if(sizeof(m)==1)
cout<<"输入错误"<<endl;

}
我随便输入一个数,例如2,结果程序返回的是:282214。这是怎么回事啊?

5 楼

语句:cout<<'n='<<n<<endl;
的'应改为"

6 楼

你将cout<<"n="<<n<<endl;
应为双引号!!!

7 楼



   把基础学好,相信你就不会问这样的问题了,
    if (sizeof(m) == 4) // 它也可能是4个字节的CHAR型!
   {
    ......
    }
     小于255的整型数,也可当作unsigned char型,

     基础很重要,也可以考虑学学好ASM!

我来回复

您尚未登录,请登录后再回复。点此登录或注册