转换宽字符串在C ++小写(Converting wide char string to lower

2019-08-31 18:27发布

如何转换从上面情况下wchar_t的字符串,在C ++为小写?

该字符串包含日本,中国,德国和希腊字符的混合。

我想过使用towlower ...

http://msdn.microsoft.com/en-us/library/8h19t214%28VS.80%29.aspx

..但文件说:

towlower的情况下转换为语言环境而异。 只有有关当前语言环境中的字符的情况下被改变。

编辑:也许我应该说明我在做什么。 我收到来自用户的Unicode的搜索查询。 它最初是在UTF-8编码,但我将其转换为widechar(我可能是错的写法)。 我的调试器(VS2008)正确地显示了日本,德国等在“变量快速监视”字。 我需要经过以Unicode另一组数据和搜索字符串的匹配。 虽然这是没有问题的,当搜索是大小写敏感的我做的,这是更多的问题做不区分大小写。 我(也许幼稚)的方法来解决这个问题。将所有输入数据和输出数据转换为小写,然后进行比较。

Answer 1:

如果字符串包含了所有这些字符,代码集必须是基于Unicode。 如果适当地实施, Unicode的 (第4章“ 字符属性 ”)定义字符属性包括字符是否是上壳体和下壳体的映射,等等。

鉴于前同步码,所述towlower()从函数<wctype.h>是使用正确的工具。 如果没有做这项工作,你有一种或多种QoI(质量实行的)问题与供应商洽谈。 如果发现供应商反应迟钝,然后再看备选库。 在这种情况下,你可能会考虑ICU (Unicode的国际组件)。



Answer 2:

你手上有一个讨厌的问题。 日语语言环境将不利于德国的转换,反之亦然。 有不有captalization的概念,无论是语言( toupper和朋友将是一个空操作在这里,我想)。 所以,你可以从相同的语言打破了你的字符串成字的各个不同的部分? 如果可以,那么你可以转换的碎片,把它们串起来。



Answer 3:

该SO回答显示了如何工作方面具有几种区域合作。 如果这是Windows操作系统,那么可以考虑使用Win32 API函数,如果你可以用C ++运行。NET(托管C ++),你可以使用char.ToLowerstring.ToLower功能,这些功能都支持Unicode标准。



Answer 4:

看看_wcslwr_l<wchar.h> ( MSDN )。

你应该能够在输入每个地区运行的功能。



文章来源: Converting wide char string to lowercase in C++