这段代码有什么问题?
在编译过程中,我遇到了以下错误:
错误:无法将 'std::string' 转换为 'const char*',用于参数 '1',以便于 'int strcmp(const char*, const char*)'。
string s = getString(); // Return string
if(!strcmp(s, "STRING")) {
// Do something
}
在编译过程中,我遇到了以下错误:
错误:无法将 'std::string' 转换为 'const char*',用于参数 '1',以便于 'int strcmp(const char*, const char*)'。
if (s == "STRING")
,而strcmp
是const char*
版本。(你可以使用if(!strcmp(s.c_str(), "STRING"))
,但不要这样做。) - BoBTFishstrcmp
的文档以了解它接受什么参数?既然已经有定义了operator==
的std::string
,为什么还要像那样使用strcmp
呢? - Jons == "STRING"
。 - ForEveRstd::string
类型重载了与const char *
的比较运算符,以避免像您建议的代码一样创建std::string
临时对象。 - Tony DelroyC++
的美在于string == "foo"
意思与字面上完全一致。 - stefan