| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1815 人关注过本帖
标题:[求助]如何验证变量输入是否合法
只看楼主 加入收藏
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
结帖率:41.18%
收藏
已结贴  问题点数:5 回复次数:5 
[求助]如何验证变量输入是否合法
比如一个int型变量用户输入'q'怎么检测到非法并让用户重新输入呢?
搜索更多相关主题的帖子: 如何 检测 用户 
2015-12-13 13:51
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
你是怎么获得int的呢?如果是scanf,看其返回值,istream类似。
知道不对后,再将不对的字符读出来扔掉。

看代码吧,没代码只能瞎鸡巴胡说
2015-12-13 18:54
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
回复 2楼 rjsp
程序代码:
for(n = 1; n < 4; n++)

 49       {

 50          cin>>answer;

 51          if(answer == result)

 52          {

 53             cout<<"回答正确"<<endl;

 54             break;

 55          }

 56          else if(n < 3)

 57             cout<<"回答错误.请重新输入:";

 58       }

相关部分代码是这样的.如果我输入一个'q'后就直接循环结束了.
我想问下怎么才能检测到输入不正确后让用户重新输入.
2015-12-13 22:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
程序代码:
#include <iostream>
#include <limits>
using namespace std;

int main( void )
{
    const int result = -123;

    for( size_t n=1; n!=4; ++n )
    {
        int answer;
        if( cin>>answer )
        {
            if( answer == result )
            {
                cout << "…………" << endl;
                break;
            }
        }
        else
        {
            cin.clear();
            cin.ignore( numeric_limits<streamsize>::max(), '\n' );
        }

        if( n < 3 )
            cout << "…………:";
    }

    return 0;
}
2015-12-14 08:44
yzyou521
Rank: 1
等 级:新手上路
帖 子:3
专家分:9
注 册:2016-1-7
收藏
得分:0 
新手一枚  有个笨办法  那就是再次回显让用户确认  代码如下:
程序代码:
char ans;
do
{
    cin>>num;
    cout<<"You input a numer:"<<num<<endl;
    cout<<"Is it correct?"<<endl;
    cin>>ans;
}while(ans!='y'||ans!='Y');    //输入y||Y确认,否则重新输入


[此贴子已经被作者于2016-1-7 11:03编辑过]

2016-01-07 11:02
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
char num_str[10];
do
{
    bool invalid=false;
    cin>>num_str;
    short len=strlen(num_str);
    for(short i=0;i<len;i++)
        if(num_str[i]<'0'||num_str[i]>'9')
        {     
             invalid=true;
             cout<<"非法输入!";break;
        }
 }while(invalid);
//尚未测试
2016-01-07 12:06
快速回复:[求助]如何验证变量输入是否合法
数据加载中...
 
   



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

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