【发布时间】:2011-03-25 03:33:32
【问题描述】:
是否有将 C++ 字符串从大写字母转换为小写字母的内置函数?如果不将其转换为 cstring 并在每个字符上使用 tolower 是唯一的选择?
非常感谢您。
【问题讨论】:
-
在德国,tolower("STRASSE") 应该导致“straße”。在瑞士,它应该是“strasse”。世界各地还有更多这样的案例。内置函数必须正确处理这些情况。如果您不在乎,只需在每个字符上使用 tolower() 即可,如大多数答案所示。
-
@Sjoerd:很好的例子。你听说过任何优雅地处理这些案例的图书馆吗?我可能对此感兴趣。
-
@ereOn:不,我从来不需要。我知道 tolower() 存在问题,但是在我居住的地方和我编写的应用程序中,tolower() 通常“足够好”。
-
我认为 ICU 可以正确处理它 (icu-project.org),但对于 OP 的目的来说这可能是矫枉过正。
-
@ereOn:如果没有包含所有歧义词的字典,实际上几乎是不可能的。在德语中,SS只有在说慢的时候才会变成ß,否则就应该变成ss。