题
如何在C ++中将wchar_t字符串从大写转换为小写?
该字符串包含日语,中文,德语和希腊字符的混合。
我想过使用拖车......
http://msdn.microsoft.com/ EN-US /库/ 8h19t214%28VS.80%29.aspx
..但文档说:
towlower的案例转换是特定于语言环境的。只有与当前语言环境相关的字符才会被更改。
编辑:也许我应该描述我在做什么。我收到用户的Unicode搜索查询。它最初采用UTF-8编码,但我将其转换为widechar(我的措辞可能不对)。我的调试器(VS2008)在<!>“变量快速监视<!>”中正确显示日语,德语等字符。我需要在Unicode中查看另一组数据并查找搜索字符串的匹配项。虽然当搜索区分大小写时,这对我来说没有问题,但是在不区分大小写的情况下更难以解决问题。解决问题的我(可能是天真的)方法是将所有输入数据和输出数据转换为小写,然后进行比较。
其他提示
你手头有一个讨厌的问题。日语语言环境无法帮助转换德语,反之亦然。有些语言也没有被捕获的概念(toupper
和朋友在这里是无操作的,我想)。那么,你可以将你的字符串分解成同一种语言的单个词块吗?如果可以的话,你可以转换它们并将它们串起来。
此SO答案显示了如何使用构面处理多个区域设置。如果这是在Windows上,您可以考虑使用win32 API函数,如果您可以使用C ++ .NET(托管C ++),则可以使用符合Unicode的char.ToLower
和string.ToLower
函数。
在_wcslwr_l
中查看<wchar.h>
( MSDN )。
您应该能够在每个语言环境的输入上运行该函数。
不隶属于 StackOverflow