我开始学习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')
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
你必须改变这个
genderC != 'f'|| genderC != 'm'
到此:
genderC != "f" || genderC != "m"
genderC
是string
,而string
是两个"
之间的字符序列。如果genderC
是char
,则不会有任何问题。
答案 1 :(得分:1)
您正在将字符串与char进行比较。 char是一个整数类型,这就是您收到错误消息的原因 说你不能将字符串与int进行比较。
'f'
和'm'
的类型为char
,而genderC
的类型为std::string
。
所以你有两个选择:
"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位整数。