给定string foo
,我已经写了answers关于如何使用cctype
的 tolower
将字符转换为小写
transform(cbegin(foo), cend(foo), begin(foo), static_cast<int (*)(int)>(tolower))
但是我有begun to consider
locale
的 tolower
,可以这样使用:use_facet<ctype<char>>(cout.getloc()).tolower(data(foo), next(data(foo), foo.size()));
tolower
接受并返回int
(我认为这只是一些陈旧的C东西)以外,我的意思是? 最佳答案
不幸的是,两者都同样糟糕。尽管std::string
伪装成utf-8编码的字符串,但方法/函数(包括tolower)中的任何一个都不真正知道utf-8。因此,tolower
/tolower
+语言环境可能适用于单字节(= ASCII)字符,对于其他每种语言,它们都会失败。
在Linux上,我将使用ICU库。在Windows上,我将使用CharUpper
函数。
关于c++ - 在C++中哪个更低?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37482246/