使用“cin”的用户输入验证

Posted

技术标签:

【中文标题】使用“cin”的用户输入验证【英文标题】:User input validation using "cin" 【发布时间】:2013-01-13 14:26:17 【问题描述】:

我需要通过 cin 验证用户输入,我的代码如下:

#include"iostream"
using namespace std;

int main()

int choice = 0; 
while(1)

    cout<<"ENTER your choice a value between 0 to 2"<<endl;
        cin>>choice;    

        // Here i need some logic which will work like "choice" can be only
        // Integer and within the range i.e. 0 to 2 and if it is not
    // satisfy condition then ask user to input again
    switch(choice)
    
    case 0:
        exit(1);
        break;

    case 1:
       fun();
       break;
    case 2:
       fun1();
       break;
    default: cout<<"Please enter a valid value"<<endl;
            break;
    


return 0;

【问题讨论】:

这可能会有所帮助:parashift.com/c++-faq/istream-and-ignore.html 您还没有真正解释问题所在(但请参阅 chris 的评论)。另外,while (1) => while (true) 我会将exit(1) 替换为return 1 @KonradRudolph 是的,我可以做到,我检查了克里斯评论,我认为这将解决我的问题....我只需要从 0 到 2 的用户输入并拒绝其他输入并从用户输入。 【参考方案1】:

一个简单的示例:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

template <typename T>
bool toNumber(const std::string &x, T &num)

    return (std::stringstream(x) >> num);

int main() 
    while (true) 
        cout << "ENTER your choice a value between 0 to 2" << endl;

        string s;
        cin >> s;

        int choice = 0;

        if (toNumber(s, choice)) 
            switch (choice) 
              case 0: exit(1); break;
              case 1: fun();   break;
              case 2: fun1();  break;
            
        
        else
            cout << "Please enter a valid value" << endl;
    

【讨论】:

以上是关于使用“cin”的用户输入验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将用户输入验证为双精度?

使用 (cin) 用户输入将其粘贴到 std::system 并在另一个终端中使用输入运行命令

用 cin 检查用户整数输入会产生无限循环

C ++,cin,直到不再使用while循环在线输入

C++中cin和cout输入输出流用法简介

C++中cin和cout输入输出流用法简介