如何在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