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

时间:2013-07-18 06:28:07

标签: c++ c visual-c++ mfc

我在VC ++ MFC中转换为小写字母的小写字母有问题。我在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库。提前谢谢!

2 个答案:

答案 0 :(得分:3)

如果您的项目使用Unicode字符集(项目属性),CString::MakeLower()应该有效 - 请注意,这不会转换字符串的内容,它会返回一个新的字符串,见this MSDN article

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

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

答案 1 :(得分:0)

尝试

std::wstring data = L"ИИИЛЛЛЛ"; // Wide chars

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