4

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

std::string data = "ИИИЛЛЛЛ"; //保加利亚字符

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

但它无法加载 unicode 字符,我得到“????” 符号代替 unicode 字符。

如果有针对 unicode 字符的解决方案,请告诉我。我不喜欢使用 boost 库。提前致谢!

4

2 回答 2

3

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

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

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

于 2013-07-18T07:02:23.817 回答
1

尝试

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

std::transform(data.begin(), data.end(), data.begin(), std::tolower<wchar_t>);
于 2013-07-18T07:10:16.490 回答