std :: find不能使用std :: string

fea*_*eoc -2 c++ string find c++17

我有一个很奇怪的问题.我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)

产生问题的代码:

#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");
}
Run Code Online (Sandbox Code Playgroud)

替换"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  
Run Code Online (Sandbox Code Playgroud)

Arn*_*rah 5

由于std::find期望值类型为std::string(std::string::value_type),您只能传递char给它(chars由单引号分隔,而不是双引号).如果要在a中找到一个字符串std::string,请使用std::string::find