【发布时间】:2013-07-16 23:13:36
【问题描述】:
我在将 VC++ MFC 中的 unicode 字符转换为小写字母时遇到问题。我在 CString 变量中有 unicode 字符。所以,英语 MakeLower() 工作正常,我得到小写。但它无法将 unicode 字符转换为小写。我确实尝试了 STL 算法转换:
std::string data = "ИИИЛЛЛЛ"; //保加利亚字符
std::transform(data.begin(), data.end(), data.begin(), ::tolower);
但它无法加载 unicode 字符,我得到“????”符号代替 unicode 字符。
如果有针对 unicode 字符的解决方案,请告诉我。我不喜欢使用 boost 库。提前致谢!
【问题讨论】:
-
std::tolower是字符,不是基于字节的,因此无法对非 ANSII 字符串执行操作。在这种情况下,你真的应该考虑使用boost::locale。 -
@nijansen:他使用的是 C 调用
::tolower,而不是 C++std::tolower<char>。 -
@MSalters 你是对的,我的错。
标签: c++ c visual-c++ mfc