C ++验证用户输入是否为单个字符

时间:2018-12-12 00:35:10

标签: c++

optionTest是一个字符串,而option是一个字符。当我输入“ ee e”之类的内容时,就会发生此问题。尽管我忽略/清除了最后一个“ e”。我希望只要输入的内容不是单个字符,就可以运行验证循环。

    cin >> optionTest;

    while (optionTest.length() != 1) {
        cout << "Invalid input. please try again." << endl;
        cin.ignore();
        cin.clear();
        //receive option
        cin >> optionTest;
    }

    option = optionTest[0];

1 个答案:

答案 0 :(得分:5)

来自std::basic_istream::ignore()'s description

  

g+theme(axis.text=element_text(size=12), axis.title=element_text(size=14,face="bold"))

     

它从流中提取字符并丢弃它们,直到出现以下任何一种情况为止:

     提取了

basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() );个字符。在特殊情况下,当count等于count

时,此测试将被禁用

由于您将其用空括号括起来,因此std::numeric_limits<std::streamsize>::max()为1,因此仅提取了一个字符(在您的情况下为空格字符)。

尝试count(或至少任何足够大的数字)。