使用 #include <boost/algorithm/string.hpp>
比较std::string
与 std::vector<std::string>
std::string commandLine
std::string::size_type position
std::string delimiters[] = {" ", ",", "(", ")", ";", "=", ".", "*", "-"};
std::vector<std::string> lexeme(std::begin(delimiters), std::end(delimiters));
比较
while (!boost::algorithm::contains(lexeme, std::to_string(commandLine.at(position)))){
position--;
}
生成以下错误
Error 1 error C2679: binary '==' : no operator found which takes a right-hand operand of type 'const char' (or there is no acceptable conversion)
const char
?我不是在定义字符串吗?
最佳答案
boost::algorithm::contains
测试一个 sequence 是否包含在另一个序列中,而不是一个 item 是否包含在一个序列中。您正在传递一系列字符串和一系列字符(也称为字符串);因此,当它尝试将字符串与字符进行比较时会出错。
相反,如果您想在字符串序列中查找字符串,请使用 std::find
:
while (std::find(lexeme.begin(), lexeme.end(),
std::to_string(commandLine.at(position))) == lexeme.end())
{
--position;
}
关于c++ - boost::algorithm::compare & const char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15886488/