发布日期:2018-03-26
如何将字符串转换为小写的字符串。+ 查看更多
如何将字符串转换为小写的字符串。
+ 查看更多
发布日期:2018-02-26 17:05
分类:CPlusPlus
浏览次数:109
我想将 std::string 转换为小写的。我知道 tolower() 这个方法,但是以前我觉的这个方法是有问题而且不完美的,因为使用一个字符串需要遍历每个字符。
有没有一个在任何时候工作效率都百分百的方法来替换使用这个方法。
回答
#include#include std::string data = "Abc"; std::transform(data.begin(), data.end(), data.begin(), ::tolower);
你真的没办法不遍历每个字符。不然没有办法能确定字符是大写还是小写。
如果你真的不想用 tolower() ,这里有一个不能移植的替代品,我不推荐你使用。
char easytolower(char in){ if(in<='Z' && in>='A') return in-('Z'-'z'); return in; } std::transform(data.begin(), data.end(), data.begin(), easytolower);
注意 tolower() 只能做一个单字节字符的变换,这是不适合很多的脚本的,特别是使用UTF-8这样多字节编码的。