我有一个很奇怪的问题。我尝试使用std::find
宽度std::string
,但在Visual Studio 2017中编译时出现以下错误:
Error C2446: '==': no conversion from 'const char *' to 'int'
c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\xutility:3481
产生问题的代码:
#include <algorithm>
#include <string>
int main(int argc, char **argv)
{
std::string s("Just a test string");
auto itr = std::find(s.begin(), s.end(), "t");
}
用"t"
替换std::string("t")
会产生以下错误:
Error C2678: binary '==': no operator found which takes a left-hand operand of type 'char' (or there is no acceptable conversion)
c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\tools\msvc\14.12.25827\include\xutility:3481
答案 0 :(得分:5)
由于std::find
期望std::string
(std::string::value_type
)的值类型,您只能将char
传递给它(char
s由单个分隔,而不是双引号)。如果您想在std::string
中找到字符串,请使用std::string::find