C++ , winapi 比较两个 WCHAR * 字符串

Posted

技术标签:

【中文标题】C++ , winapi 比较两个 WCHAR * 字符串【英文标题】:C++ , winapi Compare two WCHAR * strings 【发布时间】:2011-11-06 21:46:44 【问题描述】:

我想比较两个WCHAR* 字符串。

怎么做?

附: 我想在比较时忽略大小写

我知道你可以使用strcmpi,但它不适用于WCHAR*

【问题讨论】:

【参考方案1】:

要区分大小写比较,请查看wcscmp

对于不区分大小写的比较,请查看_wcsicmp

【讨论】:

如何使用它才能忽略大小写? @SoumyajitRoy 我确定有些东西存在,但这个问题被标记为winapi【参考方案2】:

您必须使用strcmpWCHAR_t 版本。你可以找到here的定义。

对于不区分大小写的比较,请使用wcscasecmp。

【讨论】:

【参考方案3】:

您是否考虑过使用 StrCmpLogicalW()?根据您的需要,这可能比 wcscmp 更可取。

【讨论】:

同样,这是区分大小写的。 不,不是,看看MSDN页面。 :-) 但是,StrCmpLogicalW 会关心字符串中的前缀数字。【参考方案4】:

Win32 API 中有 lstrcmpi 函数,它与 LPCTSTR 一起使用,而不是 const char *。不知道为什么它不受欢迎 - 我从 1994 年开始使用它(主要是 lstrcmp 没有“i”)。

【讨论】:

以上是关于C++ , winapi 比较两个 WCHAR * 字符串的主要内容,如果未能解决你的问题,请参考以下文章

WinAPI LPWSTR,C++11 u16string?

WinAPI 中的 sz 和 pwsz 前缀

C++搞懂char与wchar_t字符串

如何比较参数字符串 Visual C++

wchar 以单个或两个空字节结尾?

简单的匿名管道 - 您使用啥包装器模型? (WinAPI, C++)