比较 2 个 wchar_t 数组
Posted
技术标签:
【中文标题】比较 2 个 wchar_t 数组【英文标题】:Comparing 2 wchar_t arrays 【发布时间】:2011-12-01 12:00:53 【问题描述】:我确信这很简单,但我来自 c# 背景,字符串很容易,现在我正在对非托管世界进行一次小旅行,我很困惑。
基本上我使用 EnumDisplayDevices 列出可用设备,我想针对特定适配器,因此我需要将 DeviceString 和 DeviceName 与一些已知值进行比较,以查看我是否有正确的适配器可以使用。
但我很难过,我这样定义了已知值...
wchar_t devName[] = L"Intel(R) HD Graphics Family";
但直接比较不起作用 - if(devName == theDisplay.DeviceName)
strcmp
似乎不适用于宽字符,所以我不知道该怎么做,请问有人知道该怎么做吗?
谢谢
【问题讨论】:
【参考方案1】:使用std::wstring
,它有一个operator==
。
【讨论】:
这对我有用,因此使用了 2 个 std::wstrings:if (devName.compare(dn) == 0) @john:你应该使用if (devName == dn)
当 OP 说“C# 中的字符串很简单”时,我不知道该笑还是该哭,然后您必须编写所有这些成员函数废话进行简单比较。据我所知,C++ 是为数不多的类 C 语言之一,您可以像理智的人一样将字符串与s1 == s2
进行比较。
你指的是什么成员函数的废话?通常在 c# 中,如果我想比较 2 个字符串,我会创建 2 个字符串并使用 strcmp,很简单。正如我在原始帖子中所说,s1 == s2 不适用于 wchar_t 数组。
@johnbowring:这是一个std::wstring
。正如我之前所说。您可以使用if (s1 == s2)
来比较一对std::wstring
,其中s1
和s2
是std::wstring
。你很困惑,因为你正忙于让 C++ 看起来像 C#,你还没有学到一点关于 C++ 的知识。 C++ 101:使用标准字符串类满足所有字符串处理需求。【参考方案2】:
如果您查看 strcmp
的 Visual Studio 帮助,您会发现它列出了 3 个用于比较字符串的函数:strcmp
、wcscmp
和 _mbscmp
。你要找的是wcscmp
。
【讨论】:
以上是关于比较 2 个 wchar_t 数组的主要内容,如果未能解决你的问题,请参考以下文章