| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1510 人关注过本帖
标题:int a=0;cin>>a;如何避免输入字符而并非和数字
只看楼主 加入收藏
guoyao333
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2012-12-22
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:6 
int a=0;cin>>a;如何避免输入字符而并非和数字
int a=0 ;
cin>>a ;

如果输入的不是字符那么a的数值将不变;

那么我怎么避免输入的是字符

怎么让输入字符时显示出“输入错误”的信息?

a必须是要输入一个数值的。
就像网游用户名不和要求的时候会无法继续进行的那样。

程序代码:
#include <iostream>
using namespace std;

int main()
{
    int a = 0;
    cin>>a;
    while(a<=0)
    {
    cout<<"error";
    cin>>a;        //此处
    }    
    system("pause");
}


上述代码中若是输入字符。则会不断显示“error”。
而不会产生第二个cin>>a的停顿。
请问这是为什么。
搜索更多相关主题的帖子: 用户名 如何 
2013-03-07 23:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:3 
程序代码:
#include <iostream>
#include <limits>
using namespace std;

int main()
{
    int a;
    while( !(cin>>a) )
    {
        cerr << "error\n";
        cin.clear();
        cin.ignore( numeric_limits<streamsize>::max(), '\n' );
    }
   

    return 0;
}
2013-03-08 08:23
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:3 
楼上的代码如果输入数据是"11abc"的话,不会提示错误。
是否应该判断每一个字符 isdigit()?

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2013-03-08 10:21
小菜B
Rank: 2
等 级:论坛游民
帖 子:29
专家分:25
注 册:2013-3-6
收藏
得分:3 
因为输入时会敲下回车建,所以比如你输入p然后回车,在输入队列中就有p和回车,因为p的ascll码是1110000,所以p就被当作一个负数,从而显示error,然后又遇到cin>>a,所以输入队列中的回车就会遇上被输入到a里。由于回车不是int类型。所以相当与将空字符输进a里,但是回车还是留在输入队列中,永远跳不过去这个循环。可以使用cin.get()将输入队列中的回车丢弃。
2013-03-08 11:16
guoyao333
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2012-12-22
收藏
得分:0 
回复 4楼 小菜B
哦哦哦 了解了!
2013-03-09 12:55
guoyao333
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2012-12-22
收藏
得分:0 
回复 3楼 lonmaor
就不考虑那种砸场子的了先。。
2013-03-09 12:57
guoyao333
Rank: 1
等 级:新手上路
帖 子:13
专家分:2
注 册:2012-12-22
收藏
得分:0 
回复 2楼 rjsp
感谢!
2013-03-09 12:58
快速回复:int a=0;cin>>a;如何避免输入字符而并非和数字
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.096755 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved