尝试验证用户输入以确保它是两个字符之一

时间:2015-01-15 08:49:40

标签: c++

我开始学习C ++语法,并且我正在尝试在我正在编写的程序中验证用户输入。这是我尝试做的事情:

string genderC;
cout << "Enter 'm' for male and 'f' for female:" << endl;
cin >> genderC;
while( !(cin >> genderC) || genderC != 'f'|| genderC != 'm') {
    cout << "Bad input\nEnter 'm' for male and 'f' for female:" << endl;
    cin.clear();
}
//...

它给了我以下错误:

invalid operands to binary expression ('string' (aka 'basic_string<char, char_traits<char>,     allocator<char> >') and 'int')

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:1)

你必须改变这个

genderC != 'f'|| genderC != 'm'

到此:

genderC != "f" || genderC != "m"

genderCstring,而string是两个"之间的字符序列。如果genderCchar,则不会有任何问题。

答案 1 :(得分:1)

您正在将字符串与char进行比较。 char是一个整数类型,这就是您收到错误消息的原因 说你不能将字符串与int进行比较。

'f''m'的类型为char,而genderC的类型为std::string

所以你有两个选择:

  1. 输入char
  2. 类型
  3. 将genderC与"f""m"(即字符串)进行比较

答案 2 :(得分:0)

genderC变量的类型为#34;字符串&#34;而且你正在将它与“f&#39;和&#39; m&#39;属于&#34; char&#34;由于单引号。

如果你像这样重写你的while循环,你的问题应该得到解决:

while( !(cin >> genderC) || genderC != "f" || genderC != "m") {

由于双引号,&#34; f&#34;和&#34; m&#34;属于&#34; char *&#34;可以与&#34; string&#34;。

进行比较

请注意,编译器指的是那两个字面值&#34; char&#34;输入&#34; int&#34;因为char实际上是一个8位整数。