C++ string的大小写转换

将一个string转换成大写或者小写,是项目中经常需要做的事情,但string类里并 没有提供这个方法。自己写个函数来实现,说起来挺简单,但做起来总让人觉得不方便。打个比方:早上起来想吃个汉堡,冰箱里有生牛肉,有面粉,也有微波炉, 是可以自己做的,但是实在是太费事,没几个人愿意做。但是,打个电话给肯德基宅急送,10分钟后就有热乎乎的汉堡送上门了,大大节省了时间(时间就是金 钱,你可以将时间用在更重要的开发工作上),并且味道也不差,何乐而不为呢?

STL的algorithm库确实给我们提供了这样的便利,使用模板函数transform可以轻松解决这个问题,开发人员只需要提供一个函数对象,例如将char转成大写的toupper函数或者小写的函数tolower函数。



transform原型:

template < class InputIterator, class OutputIterator,
 class UnaryOperator >  
      OutputIterator transform ( InputIterator first1, InputIterator last1,  
                                 OutputIterator result, UnaryOperator op );  

    template < class InputIterator1, class InputIterator2,  
               class OutputIterator, class BinaryOperator >  
      OutputIterator transform ( InputIterator1 first1, InputIterator1 last1,  
                                 InputIterator2 first2, OutputIterator result,  
                                 BinaryOperator binary_op );

测试代码:

1 #include <string>  
 2 #include <algorithm>  
 3 using namespace std;  
 4       
 5 int main()  
 6 {  
 7         string strA = "yasaken@126.com";  
 8         string strB = "LURY@LENOVO.com";  
 9         printf("Before transform:\n");  
10         printf("strA:%s \n", strA.c_str());  
11         printf("strB:%s \n\n", strB.c_str());  
12       
13         transform(strA.begin(), strA.end(), strA.begin(), ::toupper);  
14         transform(strB.begin(), strB.end(), strB.begin(), ::toupper);  
15         printf("After transform to toupper:\n");  
16         printf("strA:%s \n", strA.c_str());  
17         printf("strB:%s \n\n", strB.c_str());  
18       
19         transform(strA.begin(), strA.end(), strA.begin(), ::tolower);  
20         transform(strB.begin(), strB.end(), strB.begin(), ::tolower);  
21         printf("After transform to lower:\n");  
22         printf("strA:%s \n", strA.c_str());  
23         printf("strB:%s \n\n", strB.c_str());  
24         return 0;  
25 }

运行结果:

1 strA:yasaken@126.com   
 2 strB:LURY@LENOVO.com   
 3   
 4 After transform to toupper:  
 5 strA:YASAKEN@126.COM   
 6 strB:LURY@LENOVO.COM   
 7   
 8 After transform to lower:  
 9 strA:yasaken@126.com   
10 strB:lury@lenovo.com

转载自:http://blog.csdn.net/zhongyhc/article/details/41686893。原文链接: https://www.cnblogs.com/balingybj/p/4678850.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/219647

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午10:38
下一篇 2023年2月13日 上午10:38

相关推荐