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