大写转换的不同方法

来源:互联网 发布:拳皇98um键盘优化补丁 编辑:程序博客网 时间:2024/04/28 19:25

方法一:自定义函数

    char Toupper(char c)    {    if('a' <= c && c <= 'z')    c = c +  'A' - 'a';    return c;    }    std::string str = "hello world1";    transform(str.begin(), str.end(),str.begin(), ::tolower);

方法二:仿函数

    // 仿函数    struct convert {       void operator()( char& c) { c = toupper((unsigned char)c); }    };    for_each(str.begin(),str.end(),convert());

方法三:全字符转换

    /*    a 0110 0001     A 0100 0001     只有第6位是不一样的,所以,如果想把小写转换成大写,只需要将第6位改成0,也就是-32。这样直接和     1101 1111     进行与操作,这样就保证了其他位不变,将第6位变成了0     同样,如果要将大写转换成小写,需要将第6为改为1。     直接和     0010 0000     进行或运算,就可以完成。     还有一个比较更简单的是直接和     0010 0000     进行异或运算    */    void ToUpper_1(char* s)     {         char* p = s;        while(*s !='\0')        {            std::cout<< *s;            if(*s >= 'a' && *s <= 'z')             *s &= 0xDF;   // 11011111B             s++;        }    }
原创粉丝点击