请问C++中有判断数据类型的语句吗?

reticentme 2009-12-16 07:39:46
在做一个程序,输入不同的数据类型要得到不同的结果,比如说a*b=c,如果a和b都为整型,则计算结果,如果是char型,则告诉用

户输入错误,那么怎么样判断用户输入的到底是哪种数据类型呢? 望大侠们指教~
...全文
240 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
reticentme 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qqwx_1986 的回复:]
这样?
C/C++ codechar a[8]={0},b[8]={0};
cin>>a>>b;for(int i=0; i<8;++i)
{if( (a[i]<'0'||a[i]>'9'||b[i]<'0'||b[i]>'9')&& a[i]!=0&& b[i]!=0)
{
cout<<"error input!"<<endl;break;
}
}int aa= atoi(a),bb=atoi(b);
cout<<aa*bb<<endl;
[/Quote]
为什么去掉&& a[i]!='0' && b[i]!='0'后就会输出error input呢
reticentme 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qqwx_1986 的回复:]
这样?
C/C++ codechar a[8]={0},b[8]={0};
cin>>a>>b;for(int i=0; i<8;++i)
{if( (a[i]<'0'||a[i]>'9'||b[i]<'0'||b[i]>'9')&& a[i]!=0&& b[i]!=0)
{
cout<<"error input!"<<endl;break;
}
}int aa= atoi(a),bb=atoi(b);
cout<<aa*bb<<endl;
[/Quote]
感谢~~
starcat 2009-12-16
  • 打赏
  • 举报
回复
好像叫RTTI吧……
runtime type identification
qqwx_1986 2009-12-16
  • 打赏
  • 举报
回复
这样?

char a[8]={0},b[8]={0};
cin>>a>>b;
for(int i=0; i<8; ++i)
{
if( (a[i]<'0'||a[i]>'9' ||b[i]<'0'||b[i]>'9') && a[i]!=0 && b[i]!=0)
{
cout<<"error input!"<<endl;
break;
}
}
int aa = atoi(a),bb=atoi(b);
cout<<aa*bb<<endl;
initial_y 2009-12-16
  • 打赏
  • 举报
回复
既然是用户输入,那肯定都是以字符串形式读取的啊,应该将用户输入转换成数字类型再进行计算。转换的过程中如果发现不符合规范再提醒用户。
reticentme 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sammylan 的回复:]
看楼主的要求
貌似是要用户输入东西...
然后判断是否是字符串吧...
如果是模板的话...就没必要用typeid了......
[/Quote]
就是三楼的这个意思,可以麻烦举个例子吗~
reticentme 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kangming07 的回复:]
看对应的ASCII值,0~10都有对应的ASCII只,如果在其范围内,就是整形输入,否则就是字符型输入
[/Quote]

用ASCII的话,如果我输入1234*5678呢,怎么判断呢
reticentme 2009-12-16
  • 打赏
  • 举报
回复
用ASCII的话,如果我输入1234*5678呢,怎么判断呢
kangming07 2009-12-16
  • 打赏
  • 举报
回复
看对应的ASCII值,0~10都有对应的ASCII只,如果在其范围内,就是整形输入,否则就是字符型输入
reticentme 2009-12-16
  • 打赏
  • 举报
回复
就是三楼的这个意思,可以麻烦举个例子吗~
SammyLan 2009-12-16
  • 打赏
  • 举报
回复
看楼主的要求
貌似是要用户输入东西...
然后判断是否是字符串吧...
如果是模板的话...就没必要用typeid了......
qqwx_1986 2009-12-16
  • 打赏
  • 举报
回复
cout<<typeid(int).name()<<endl;
老邓 2009-12-16
  • 打赏
  • 举报
回复
typeid

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧