找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1171|回复: 8

怎样判断输入数据的类型是否和变量定义时的类型一致

[复制链接]
发表于 2009-11-2 01:27:53 | 显示全部楼层 |阅读模式 IP:江苏扬州
比如
#include <iostream.h>
main()
{
int a;
for(;;)
{
cin>>a;
if(条件)
{cout<<“输入正确”<<endl;
break;}
else cout<<"输入有误,请重新输入!"<<endl;
}
system("pause");
}
if里面该怎么写,当输入a所定义的整形数据时程序完成,而输入其他类型的数据时,比如输入了字符型数据,则出错,返回重输。直到正确为止
发表于 2009-11-2 01:27:55 | 显示全部楼层 IP:江苏扬州
我试了一下。
如果a是整型,而输入的是字符型,那么a没有被赋值。

你可以给a赋个初值,输入数据之后,判断a的值是否被改变,如果仍然是初值,就表明,输入的类型错误。
不过这个方法需要保证,输入的数据和a的初值不能相等。
回复

使用道具 举报

发表于 2009-11-2 01:27:56 | 显示全部楼层 IP:江苏扬州
我改了一下,新的问题又来了。我输入一个字符型数据时它却滚屏提示出错,照理应该是返回到cin>>a,等待我重新输入。不知道怎么回事
附件: 只有本站会员才能下载或查看附件,请您 登录 或 注册
回复

使用道具 举报

发表于 2009-11-2 01:27:59 | 显示全部楼层 IP:江苏扬州
输入的类型和接受输入的变量类型不匹配 是不会被赋值的.

问题在于cin的状态会被设置为false,将不再接受后续的输入.

cin.clear()可以用来重置状态.

用cin.get()把缓冲区的不匹配的输入处理掉.(可能有更好的清除输入缓冲的办法,我只知道这一种).
回复

使用道具 举报

发表于 2009-11-2 01:28:02 | 显示全部楼层 IP:江苏扬州
我输入小数它照样会被接收
回复

使用道具 举报

发表于 2009-11-2 01:28:06 | 显示全部楼层 IP:江苏扬州
只读取了小数点前面的,

.和后面的留在缓冲里了
回复

使用道具 举报

发表于 2009-11-2 01:28:12 | 显示全部楼层 IP:江苏扬州
#include <iostream>
using namespace std;
int main()
{
int a =-1;
for (;;)
{
cin>>a;
bool bRet = cin.good();
if(!bRet)
{
cout<< "error";
break;
}
else
{
cout << "corret";
break;
}
}
system("pause");
return 0;
}

刚去查了书,判断输入操作是否成功可以用 good()这个函数。如果为真,说明前一个操作成功,下一个操作可能成功。否则一定失败。
然后我把程序改成上面那样,就没问题了。
回复

使用道具 举报

发表于 2009-11-2 01:28:19 | 显示全部楼层 IP:江苏扬州
wood说的很对。又学到了很多阿。

查了书,书上说:如果输入小数,他会把小数点开始的部分作为供输入读的下一个字符。
那么这个输入操作应该是失败了。
回复

使用道具 举报

发表于 2009-11-2 01:28:28 | 显示全部楼层 IP:江苏扬州
用这个函数也可以了。
留在缓冲里的小数对后面的操作有什么影响呢
按照要求输入小娄的话也要判断为错该怎么弄呢
#include <iostream.h>
main()
{
int a;
while(!(cin>>a)){
cin.clear();
cin.ignore();
cout<<"error"<<endl;
}
cout<<"true"<<endl;
system("pause");
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 21:28 , Processed in 0.229589 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表