如何将字符串(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/

10-11 22:50
查看更多