用于用户输入的 C++ 字符串验证

标签 c++ validation loops cin

我想做的就是提示用户回答是或否,并对其进行验证以确保他们没有输入愚蠢的内容。

我认为这将是一个相对直接的任务,但是在我自己多次尝试失败之后,并且在网上四处看看,似乎每个人都对最好的方法有不同的看法。

伪代码

  1. 提问

  2. 提示用户

  3. 检查 input = yes 或 input = no

  4. 如果是,做场景a

  5. 不,做场景b

  6. 如果无效,返回第2点

代码

main.cpp

std::cout << "Do you have a user name? ("yes", "no"): ";
std::cin >> choice;
user.validation(choice);

if (choice == "yes")
{
// some code
}

if (choice == "no")
{
// some code
}

用户.cpp

void User::validation(std::string choice)
{
    while (choice != "yes" && choice != "no")
    {       
        std::cout << "Error: Please enter 'yes' or 'no': ";
        std::cin >> choice;
        if (choice == "yes" && choice == "no")
        {
            break;
        }

    }
}

这是有效的,直到他们最终输入是或否,如果是,则跳过去,如果不是,直接进入程序的下一部分

而且我希望能够在整个程序中多次调用 user.validation 来验证其他是/否问题

最佳答案

尝试改变这个

if (choice == "yes" && choice == "no")

为此

if (choice == "yes" || choice == "no")

选择不能同时是"is"和“否”。

关于用于用户输入的 C++ 字符串验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501467/

相关文章:

c++ - 向网格添加索引

javascript - es6 使用 var、let 或 const 迭代对象?

c++ - ISO C++禁止声明多集

c++ - 说一个C++对象是可 move 的,这到底意味着什么?

php - PHP 的 WxStyledTextCtrl 代码折叠

javascript - Bootstrap 中输入的必需属性不起作用

regex - 使用正则表达式限制文本字段/数字字段中的输入字符?

javascript - 带参数的自定义验证

loops - Rust 中迭代器的嵌套循环

javascript - 我的 while 循环接受它不应该接受的答案。为什么?