【发布时间】:2010-12-09 12:47:22
【问题描述】:
如何在 C++ 中将 wchar_t 字符串从大写转换为小写?
字符串包含日文、中文、德文和希腊字符的混合体。
我考虑过使用 towlower...
http://msdn.microsoft.com/en-us/library/8h19t214%28VS.80%29.aspx
.. 但文档说:
towlower 的大小写转换是特定于语言环境的。仅更改与当前语言环境相关的字符以防大小写。
编辑:也许我应该描述一下我在做什么。我收到来自用户的 Unicode 搜索查询。它最初采用 UTF-8 编码,但我将其转换为宽字符(我的措辞可能有误)。我的调试器(VS2008)在“变量快速表”中正确显示了日文、德文等字符。我需要遍历 Unicode 中的另一组数据并找到搜索字符串的匹配项。虽然当搜索区分大小写时这对我来说没有问题,但不区分大小写则更成问题。我(可能是幼稚的)解决问题的方法是将所有输入数据和输出数据转换为小写,然后进行比较。
【问题讨论】:
-
另一种方法是使用忽略大小写的比较算法。案例不是您唯一的问题。如果不对字符串进行规范化,例如可以将变音符号视为一个字符(
é、Õ)或几个单独字符('e、~O)的一部分。在比较之前进行适当的标准化(NFC/NFD/NFKC/NFKD)对您的情况至关重要。 -
Abel,请将其作为正确答案发布,以便对其进行投票。在这种情况下,这几乎是唯一正确的答案......
标签: c++ lowercase widestring