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];
答案 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
(或至少任何足够大的数字)。