返回首页

我们如何可以检查任何数据类型的值由用户输入的正确与否?|我们如何可以检查任何数据类型的值由用户输入的正确与否?或如果任何用户进入这一计划的整数值,那么程序将运行,否则,如果他进入了一个浮点值,整数异常发生的地方。怎么会是,如果条件可能吗?我应该怎么写,如果条件类型检查?

void main()

{

   int val;

   try

   {

      cout<<"Enter an value :";

      cin>>val;

      if(  )

      {

          throw 2;

      }

      else

      {

          cout<<"You entered an integer value";

      }

   }

   catch(int x)

   { 

          cout<<"You should eneter an integer value..";

   }

   getch();

}

回答

评论会员:游客 时间:2012/02/07
也许是最好的方式,在这样一个简单的例子是:接受一个字符串作为input.Scan自己寻找无效字符的字符串。尼古拉・萨瓦德拉戈什
。我使用的方法称为验证(字符串myTempString){}但是这是当我transmite一个字符串
在您的情况,如果输入其他的东西(如双),它会特罗一个异常。
所以你可以做
try

{

cin>>val;

}

catch()

{

trow 2;

}
评论会员:游客 时间:2012/02/07
米卡Wendelius:好问题,值得更详细的答案在CI/O模型CI/O的背后的想法是,输入和输出两个无穷序列的基本类型(一般称为"性格",并实施虽然char或wcahr_t)序列和检索可能兑换到所有的内置类型或STL代表跨越了一套"Locale类的默认实例,通过"面"规定的程序的基本类型(字符串)被隐式"灌输"到流类,在TUR提供客户端界面(在LT,LT;和GT,GT;运营商)。哪里的"无限的字符序列"("流"长的名字)来自或去留下不详语言。这么说,"通用计划"不应该假设他们不一定绑定到不论最终利用处理设备:双向文件,网络套接字,任何事情,可以"吐出"或"排"字。CI/O的,因为这些事实,是相对贫穷的:如果一个输入满足它被指定的类型,被读出,否则流错误条件,以某种方式analised复位封锁。对于非常简单的任务(或任务的输入格式是严格定义的),这可能是足够的,机器人更复杂的任务(其中输入可以是某种错误或不可预见的或没有刚性的顺序组织)CI/O模型几乎没有支持。用户模型基本上有三种类型的应用程序(加上一些更多的衍生工具):电脑驱动程序用户驱动程序事件驱动程序电脑驱动计算机用户一步一步地告诉它想要什么数据的方案。它可以模拟用户控制台,假设终端作为输出的显示屏和键盘作为一个字符发生器映射c流。这是cin和cout。用户必须严格符合电脑的期望。健壮的程序错误条件检查,重置流,清除缓冲区,并要求重新输入所需的数据。请注意,这已经是违反标准的C模型:在C模型的输入和输出无关。输入不反应"输出"(CI/O的是知道的东西)。试想一下,从文件中读取10个数字。如果其中一人是不能作为一个数字可读,什么费意味着"清除缓冲区,并再次询问"吗?"复位,跳过下一行分隔符的字符,然后重试"一个很好的错误恢复?还是你只是误读值吗?交流最普遍的方案不一定是设计,由用户管理。用户驱动程序"用户接口"计划必须先行一步的标准输入,是某种更"语义"。不仅仅是一个"转换器"(通常是从文本到文本的数量和数量),但一个真正的"解释"的"语言"的定义,用户可以做的动作,并收复从不一致的行动。这里是GT,GT;运营商在函数getline赞成被驳回,检索从CIN悔改的文本(从而使所有的iostream类的无用开销)和分析之前,终于被正确地转换(可能是通过另一个流绑定到字符串:sstream)这是典型的情况(见imgsrc=])程序流的一组用户提供的命令激活的功能被打破。它通常发生槽用户应该输入的文本字符串。程序本身是()循环,resamble一个命令解释器:读取字​​符串,分析,"解释"和相应的功能,如果一个命令确认被称为。循环继续下去,直到"退出"命令。在这种情况下,标准输入可以是不如它可能看起来:缓冲机制,块,直到流"行结束"如果达成,可能是没有足够的反应事件驱动程序其中C标准输入模式松散的所有其吸引力:程序的主循环每一个单一类型的字符(1可能是,甚至其他用户操纵外设像1鼠标或触摸或触控表面,)的反应可以不适合在C呢标准输入模式,甚至产出模型变成是不够的(可能是它不能了一个简单的"序列")。什么是坏的,在这里,是C...没有"标准模型"工作,因此,你必须下去的基础平台API,或者使用多平台的框架之一。其他戏剧性的方面是,几乎所有的人都基于C是10个或更多年前,寻找"带类的C"更"现代"。一个本是有差距的,有以某种方式填补。回来到OP问题你实际上是一个"电脑驱动程序",但你也想"鲁棒性",对常见的错误。我可以给一些建议:istream的,可以作为一个布尔值,这是"假","良好"状态,如果不是(本质:如果出现了在过去读错):codeprecin>>val;spanclass="code-keyword"if/span(!cin){spanclass="code-comment"/*/spanspanclass="code-comment"handleerrorcondition*//span}/pre/code可以是一个很好的方法来识别输入不一致。但流,在这一点上,是在"坏"的状态。这需要一个cin.clear()的调用,然后读取所有,而忽略了"垃圾"{体C3}这里的程序循环,直到输入满意。这是最可以仍在对齐C标准输入模式。还请注意,我这里没有使用异常。除非,如果你正在经历异常,不使用他们的方式:用户可以输错值的事实是所有,但"例外",和一般的抢眼,在同样的背景下,它已被抛出的异常是没有意义的。你可以使用正常的程序结构。异常的想法是,做错事发生在你的背景,没有你可以做任何事情,纠正/预防。所以,你的想法,什么叫你将"追赶",可能会一定程度上更多信息(失败),在有需要的行动的目的是在栈,抛出
创建另一种形式
上添加这种形式
NBSP压延;父窗体的文本框焦点事件

显示压延形式

文本框onslecteddate密切压延形式和传递价值