在不将字符串转换为全部大写或全部小写的情况下,在C++中进行不区分大小写的字符串比较的最佳方法是什么?
请说明这些方法是否符合Unicode,以及它们的可移植性.
我们如何在C或C++中将多语言字符串或unicode字符串转换为大写/小写.
如何在C++中将wchar_t字符串从大写转换为小写?
该字符串包含日语,中文,德语和希腊字符的混合.
我想过使用towlower ......
http://msdn.microsoft.com/en-us/library/8h19t214%28VS.80%29.aspx
..但文件说:
towlower的案例转换是特定于语言环境的.只有与当前区域设置相关的字符才会被更改.
编辑:也许我应该描述我在做什么.我收到用户的Unicode搜索查询.它最初采用UTF-8编码,但我将其转换为widechar(我的措辞可能不对).我的调试器(VS2008)在"可变快速监视"中正确显示日语,德语等字符.我需要在Unicode中查看另一组数据并查找搜索字符串的匹配项.虽然当搜索区分大小写时,这对我来说没有问题,但是在不区分大小写的情况下更难以解决问题.我(可能是天真的)解决问题的方法是将所有输入数据和输出数据转换为小写,然后进行比较.
我正在尝试将我的代码从使用MFC移植CString到std::stringMicrosoft Windows平台.而且我对某些事感到好奇.在以下示例中说:
CString MakeLowerString(LPCTSTR pStr)
{
CString strLower = pStr ? pStr : L"";
CharLower(strLower.GetBuffer()); //Use WinAPI
strLower.ReleaseBuffer();
return strLower;
}
Run Code Online (Sandbox Code Playgroud)
我用strLower.GetBuffer()获取要传递给CharLower API 的可写缓冲区.但我没有看到类似的方法std::string.
我错过了什么吗?如果是这样,您将如何覆盖上述方法std::string?