C++ std::find无法使用std::string
我有一个很奇怪的问题。我尝试使用width,但在Visual Studio 2017中编译时出现以下错误:C++ std::find无法使用std::string,c++,string,find,c++17,C++,String,Find,C++17,我有一个很奇怪的问题。我尝试使用width,但在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 <
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");
}
由于需要(
std::string::value\u type
)的值类型,因此只能向其传递char
(char
s由单引号分隔,而不是双引号分隔)。如果您想在std::string
中查找字符串,请使用字符串是字符数组,而不是字符串数组您的意思是我必须提供字符数组,而不是const char*或std::string?我的意思是您应该阅读文档;)。查找也允许在字符串中查找字符串的std::string::find
。请注意,这与只允许在container@feareoc--我有一个很奇怪的问题--我希望海报不要以这个短语开头。您的问题并不奇怪——类型为T
的容器要求您搜索T
。由于std::string
包含类型char
,因此可以指定char
。带引号的字符串文字不是char
。另请参见
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