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

时间:2018-02-05 13:38:56

标签: 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

产生问题的代码:

#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  

1 个答案:

答案 0 :(得分:5)

由于std::find期望std::stringstd::string::value_type)的值类型,您只能将char传递给它(char s由单个分隔,而不是双引号)。如果您想在std::string中找到字符串,请使用std::string::find