如何为unicode字符制作小写字母

how to Make lower case letters for unicode characters

本文关键字:小写字 字符 unicode      更新时间:2023-10-16

我在VC++MFC中转换为unicode字符的小写字母时遇到问题。我在CString变量中有unicode字符。因此,使用English MakeLower()可以很好地工作,我可以使用小写字母。但它无法将unicode字符转换为小写字母。我确实尝试了STL算法转换:

std::string data="ИИЛЛ"//凸出焦

std::transform(data.begin(),data.end(),data.begin),::tolower);

但它无法加载unicode字符,我得到了"???"符号来代替unicode字符。

你能告诉我是否有unicode字符的解决方案吗?我不喜欢使用boost库。提前感谢!

如果您的项目使用Unicode字符集(项目属性),CString::MakeLower()应该可以工作--请注意,这不会转换字符串的内容,它会返回一个新字符串,请参阅MSDN文章:

CString s1(_T("ABC")), s2;
s2 = s1.MakeLower();
ASSERT(s2 == _T("abc"));   

EDIT:CString::MakeLower()确实更改了字符串的内容,它还返回了对转换字符串的引用

尝试

std::wstring data = L"ИИИЛЛЛЛ"; // Wide chars
std::transform(data.begin(), data.end(), data.begin(), std::tolower<wchar_t>);