zoukankan      html  css  js  c++  java
  • 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:
    ");  
    10         printf("strA:%s 
    ", strA.c_str());  
    11         printf("strB:%s 
    
    ", 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:
    ");  
    16         printf("strA:%s 
    ", strA.c_str());  
    17         printf("strB:%s 
    
    ", 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:
    ");  
    22         printf("strA:%s 
    ", strA.c_str());  
    23         printf("strB:%s 
    
    ", 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。
  • 相关阅读:
    读书笔记----软件设计原则、设计模式
    程伟杰 | 2021软件代码开发技术作业一 | 自我介绍+课程6问
    团队作业3-需求改进&系统设计
    团队项目作业2-需求规格说明书
    【Android实习】20场面试斩获大厂offer,我学会了什么
    通俗易懂,android是如何管理内存的
    关于Handler同步屏障你可能不知道的问题
    清晰图解深度分析HTTPS原理
    这一篇TCP总结请收下
    深入浅出Java线程池:源码篇
  • 原文地址:https://www.cnblogs.com/balingybj/p/4678850.html
Copyright © 2011-2022 走看看