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



optionTest是一个字符串,option是一个char。当我输入类似"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];

来自std::basic_istream::ignore()的描述:

basic_istream& ignore( std::streamsize count = 1, int_type delim = Traits::eof() );

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

提取CCD_ 3个字符。当count等于std::numeric_limits<std::streamsize>::max()时,在特殊情况下禁用此测试

由于使用空括号进行调用,count为1,因此只提取一个字符(在您的情况下为空格字符(。

尝试cin.ignore(std::numeric_limits<std::streamsize>::max())(或者至少是任何足够大的数字(。

最新更新