zoukankan      html  css  js  c++  java
  • std::string 字符串大小写转换(转)

    该问题归结为std::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 );

    说明:

    对于第一个原型:函数将对从输入参数的first1-last1的全部变量做op函数操作。结果保存到result中,或是通过返回值返回。

    对于原形二:这个是对一的一个扩展,对于1这个只能对单个元素队列进行op操作,而第二个原形则是对对first1-last1上的元素和first2开始序列的元素逐个binary_op计算再保存到结果

    示例

    int op_inc(int num) { return ++i; }

    int op_sum(int numa,int numb) { return a+b; }


    int main()

    {

    vector<int >first;

    vector<int >second;

    vector<int >result;

    .........//初始化过程省略,不过要注意当调用第二个原型的时候,保持队列二的长度要大于等于1

    transform(first.begin(), first.end(), result.begin(), op_inc);

    transform(first.begin(), first.end(), second.begin(), result.begin(), op_sum);

    ........//输出结果

    return 0;

    }

    以上是transform的基本使用,接下来说明如何用它来处理字符串的大小写转换

    事实上很简单,主要用到了,单个字符的大小写转换函数:tolower(),toupper()

    不过对于大写转小写,同时小写转大写的要自己单独处理,函数如下

    char exchange(char c)

    {

    if(c <= 'Z' && c >= 'A')

    c = tolower(c);

    else if(c >= 'a' && c <= 'z')

    c = toupper(c);

    return c;

    }

    示例

    std::string str = "Http";

    transform(str.begin(), str.end(), str.begin(), ::tolower); //将大写的都转换成小写
    transform(str.begin(), str.end(), str.begin(), ::toupper); //将小写的都转换成大写
    transform(str.begin(), str.end(), str.begin(), exchange);  //大小写切换

    注以上结果都保存在str中。

    transform(str.begin(), str.end(), str.begin(), ::tolower); //将大写的都转换成小写
    transform(str.begin(), str.end(), str.begin(), ::tolower); //将大写的都转换成小写
    transform(str.begin(), str.end(), str.begin(), ::tolower); //将大写的都转换成小写
  • 相关阅读:
    Ajax基本案例详解之$.getjson的实现
    Ajax基本案例详解之$.getjson的实现
    Ajax传递json数据
    Ajax传递json数据
    Ajax基本案例详解之load的实现
    多节点日志数据 数据集成
    crontab 问题分析
    不留文档的某某离开后 审计服务器操作历史
    /cloudmonitor.log 主机监控
    网关会对开发者的接口非业务调用错误做统一处理
  • 原文地址:https://www.cnblogs.com/mmix2009/p/3200150.html
Copyright © 2011-2022 走看看