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

我在VC ++ MFC中转换为unicode字符的小写字母时遇到问题。我在CString Variable.so中有unicode字符,英文MakeLower()工作正常,我得到小写。但它不能将unicode字符转换为小写字母。我确实尝试过STL算法转换:

std :: string data =“ИИИЛЛЛЛ”; // bulgerian chars

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")); 

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

尝试

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