我是C++的新手。
string str = "WWWHBBB";
if(str[mid] == "H" && str[0] != "W") return; // corrected after comments for second operand
上面有if
条件的行给了我一个错误。
指针和整数('std::__1::basic_string,std::__1::分配器>::value_type'(又名'char'(和'const-char*'(之间的比较
我在互联网上搜索了足够多的内容,知道字符串中的数组式访问是可以的。错误主要是指指针和整数的比较。真正地我以为我在将字符H
与字符串str
中的另一个字符进行比较。
我试过如果str[mid]
真的返回了一个迭代器,我应该执行*str[mid]
。不!也没用。
在if语句的表达式中
if(str[mid] == "H" && str[mid] != "W") return;
具有类型CCD_ 6的字符串文字"H"one_answers"W"被隐式地转换为指向其类型const char *
的第一个字符的指针。
因此,您尝试将表达式str[mid]
返回的字符与指针进行比较。
您需要使用字符文字来代替字符串文字,例如比较字符
if(str[mid] == 'H' && str[mid] != 'W') return;
你也可以像一样写作
if(str[mid] == *"H" && str[mid] != *"W") return;
或
if(str[mid] == "H"[0] && str[mid] != "W"[0]) return;
取消引用指针,但这会使感到困惑
请注意,如果str[mid] == 'H'
,则第二个操作数将始终生成true。所以写就足够了
if( str[mid] == 'H' ) return;
您想要与单个char
进行比较
if (str[mid] == 'H' && str[mid] != 'W') return;
请注意,在这种情况下,双引号指代const char[]
,而单引号指代单个char
。
警告告诉您,在您的情况下,进行这些比较的唯一方法是将lhschar
(str[mid]
的结果(与rhs进行比较,即让数组衰减为const char*
,并将指针地址与char
进行比较。