首页 > 解决方案 > C++ 运算符 '==' 无法将 string[i] 与另一个字符串进行比较。编译错误

问题描述

#include <iostream>
using namespace std;

int main()
{
    string str = "abcdef";
    string x = "a";
    if (str[0] == x) {
        //do something...
    }
    return 0;
}

并且无法编译。

“错误:'operator==' 不匹配(操作数类型是 '__gnu_cxx::__alloc_traits, char>::value_type' {aka 'char'} 和 'std::string' {aka 'std::__cxx11::basic_string '})"

标签: c++

解决方案


std::string除了作为字符串之外,还提供了作为chars的容器的接口。因此,当您使用此容器中的operator[]访问和个人char时,您无法将 achar与字符串进行比较。如果您想要一个符号字符串,而不是使用std::string::substr()长度为 1 的符号。或者如果您希望符号与另一个符号进行比较,请声明x为单个char而不是字符串。


推荐阅读