如何将字符串(wstring)从小写字符转换为大写字符,反之亦然?
我在网上搜索,发现有一个 STL 函数 std::transform。
但直到现在我还没有想出如何为函数提供正确的语言环境对象,例如“Germany_german”。
请问谁能帮忙?
我的代码看起来像:
wstring strin = L"ABCÄÖÜabcäöü";
wstring str = strin;
locale loc( "Germany_german" ); // ??? how to apply this ???
std::transform( str.begin(), str.end(), str.begin(), (int(*)(int)tolower );
//result: "abcäöüabcäöü"
字符 ÄÖÜ 和 äöü(类似于 Ae、Oe、Ue)将无法正确转换。
P.S.:我不喜欢大换血,而且我知道 BOOST 无所不能,我更喜欢 STL 解决方案。
提前致谢
哎呀
最佳答案
如果您使用的是 Unix,请参阅 /usr/share/locale/
以了解可用的语言环境。看起来你想要 "de_DE.UTF-8"
。
但是 setlocale(LC_ALL, "");
应该将程序设置为在系统的语言环境中工作,无论它是什么。
如果我只是像这样设置默认语言环境,而不指定德国,那么您的程序对我有用(我修复了一个关闭括号)。
关于c++ - toupper/tolower + 语言环境(德语),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2598569/