string大小写转换

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

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


transform原型:

[cpp] view plaincopyprint?
  1. template < class InputIterator,class OutputIterator, class UnaryOperator >
  2. OutputIterator transform ( InputIterator first1, InputIterator last1,
  3. OutputIterator result, UnaryOperator op );
  4. template < class InputIterator1, class InputIterator2,
  5. class OutputIterator, class BinaryOperator >
  6. OutputIterator transform ( InputIterator1 first1, InputIterator1 last1,
  7. InputIterator2 first2, OutputIterator result,
  8. BinaryOperator binary_op );

测试代码:

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

运行结果:

[cpp] view plaincopyprint?
  1. strA:yasaken@126.com
  2. strB:LURY@LENOVO.com
  3. After transform to toupper:
  4. strA:YASAKEN@126.COM
  5. strB:LURY@LENOVO.COM
  6. After transform to lower:
  7. strA:yasaken@126.com
  8. strB:lury@lenovo.com

最后补一句:STL algorithm功能实在是太强劲了,非常推荐。
原创粉丝点击