字符串类-C++中指针和整数之间的比较



我是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进行比较。

相关内容

  • 没有找到相关文章

最新更新