c++中如何比较const char*和字符串
How to compare const char* with a string in C++?
我正在使用c++,我正在尝试比较字符串。
下面是我的代码,它给我返回const char*
-
const char* client_id() const {
return String(m_clientPos);
}
现在我像这样比较字符串-
cout<<client_ptr->client_id()<< endl;
if (strcmp(client_ptr->client_id(), "Hello")) {
..
} else {
..
}
但是它永远不会出现在if语句中。但是我的计算器正确地打印出了Hello
。我做错了什么吗?
你需要做if (0 == strcmp(...
见http://www.cplusplus.com/reference/cstring/strcmp/
strcmp
返回一个整数值,指示两个字符串之间的关系:零值表示两个字符串相等。大于零的值表示第一个不匹配的字符在str1中的值大于str2中的值;
永远不会进入if语句
当两个字符串相同时,strcmp
函数返回0,因此您应该看到,当两个字符串彼此相等时,代码击中else
分支。
- 0表示两个字符串相等。
- 大于零的值表示第一个不匹配的字符在str1中的值大于str2中的值;
- 小于零表示相反。
由于String
看起来不像一个内置类,并且假设您可以访问它的源代码,因此您最好将const char*
与String
类的成员函数进行比较。
相关文章:
- 在字符串函数中抛出'char const*'实例后调用的终止
- 双重标准?为什么只有 char* const&a = "bla" 的警告?
- 包括"lvtocon.h",未定义对'operator<<(std::ostream&, char const*)的引用
- 为什么 const char* const & = 可以编译"hello"?
- 将字符串文本常量定义为 char const* 和 wchar const*
- 如何将std::wstring转换为char const[]
- "char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ {"剂量是什么意思
- 使用提升对字符串进行标记化时,将令牌转换为 char* const* 时失败
- 如何从 std::initializer_list<char const* 构建 std::vector<std::string>>
- 将 std::vector<std::string> 转换为 const char* const*
- 引发"char const*"错误的实例后调用的终止
- 将const char * const参数成员分配给新值
- 从'const char**'到'char* const*'的转换无效
- 从 sub_match<常量字符 *>' 转换为'const char *const &'
- char*const和constchar*之间有什么区别?(重复-需要更多澄清)
- 使用工厂方法时编译器错误:无法转换"const std::p air<char* const
- HEVC 解码器端口 Android 警告:从 'signed char*' 到 'char const* 的转换无效*
- 如何从'char const*'中删除常量
- 'char const *str'作为模板参数
- 为什么不;t strlen(.)应为const char*const str,而不是const char*