首页 > 解决方案 > 将 std::find 与 std::string 数组一起使用时出现问题

问题描述

我正在尝试运行这个比较器:

if (std::find(movements->begin(), movements->end(), commandBuffer) != movements->end())

和:

const std::string movements[8] = {"north", "south", "east", "west", "n", "s", "e", "w"};

哪里commandBufferstd::string

在 MinGW32 9.2.0 上,我得到以下信息:

错误:'operator==' 不匹配(操作数类型为 'const char' 和 'const std::__cxx11::basic_string')

标签: c++

解决方案


要么使用std::cbeginand std::cend,要么将您的数组更改为std::array

std::array<const std::string, 8> movements = {"north", "south", "east", "west", "n", "s", "e", "w"};
const std::string commandBuffer = "north";

if (std::find(movements.begin(), movements.end(), commandBuffer) != movements.end())
    std::cout << "Found!" << std::endl;

推荐阅读