C++ string的大小写转换

 将全部的string转换为一致的大写和小写

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 );

测试代码:

#include 
#include 
using namespace std;
 
int main()
{
    string strA = "[email protected]";
    string strB = "[email protected]";
    printf("Before transform:\n");
    printf("strA:%s \n", strA.c_str());
    printf("strB:%s \n\n", strB.c_str());
 
    transform(strA.begin(), strA.end(), strA.begin(), ::toupper);
    transform(strB.begin(), strB.end(), strB.begin(), ::toupper);
    printf("After transform to toupper:\n");
    printf("strA:%s \n", strA.c_str());
    printf("strB:%s \n\n", strB.c_str());
 
    transform(strA.begin(), strA.end(), strA.begin(), ::tolower);
    transform(strB.begin(), strB.end(), strB.begin(), ::tolower);
    printf("After transform to lower:\n");
    printf("strA:%s \n", strA.c_str());
    printf("strB:%s \n\n", strB.c_str());
    return 0;
}

运行结果:

strA:[email protected] 
strB:[email protected] 
 
After transform to toupper:
strA:[email protected] 
strB:[email protected] 
 
After transform to lower:
strA:[email protected] 
strB:[email protected] 

原文链接:https://blog.csdn.net/yasaken/article/details/7303903#

你可能感兴趣的:(c++)