我在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库。提前谢谢!
答案 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>);