C++大小写字母的转换

1.利用I=和&=~进行操作

#include<iostream>
#include<stdlib.h>
#include<cassert>
using namespace std;
char* convert(char *src){
    char* p=src;
    assert(p!=NULL);
    while(*p){
        if('A'<=*p&&*p<='Z'){
            *p|=0x20;
        }else{
            *p&=~0x20;
        }
        p++;
    }
    return src;
}
int main(){
    char a[10];
    char* s;
    cin>>a;
    s=convert(a);
    cout<<s;
    system("pause");
    return 0;
}

2.利用toupper,tolower函数:

#include<stdlib.h>
#include<iostream>
using namespace std;
int main(){
    char a;
    while(a=cin.get()){ 
        if('a'<=a&&'z'>=a){
        cout<<(char)toupper(a);
        }else{
        cout<<(char)tolower(a);
        }
    }
    system("pause");
}

3.利用strupr、strlwr:

#include<stdlib.h>
#include<iostream>
#include<string>
using namespace std;
int main(){
    string s;
    cin>>s;
    char c[20];
    char* c1;
    strcpy(c,s.c_str());
    //转化为大写
    strupr(c);//传的是地址,已改变本身值
    cout<<c;
    cout<<endl;
    strlwr(c);//传的是地址,已改变本身值
    cout<<c;
    system("pause");
}

4.用迭代器实现:

#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
int main(){
    string s;
    string::iterator iter;
    cout<<"请输入字符串:"<<endl;
    cin>>s;
    for(iter=s.begin();iter!=s.end();iter++){
        if('a'<=*iter&&*iter<='z'){
            *iter=*iter&~0x20;
        }
        else{
            *iter=*iter|0x20;
        }
    }
    cout<<s<<endl;
    system("pause");
    return 0;
}

6.迭代器加transform实现:

#include<iostream>
#include<stdlib.h>
#include<string>
#include<algorithm>
using namespace std;
int main(){
    string s;
    cout<<"请输入字符串:"<<endl;
    cin>>s;
    //全部转化为大写
    transform(s.begin(),s.end(),s.begin(),toupper);
    cout<<s<<endl;
    //全部转化为小写
    transform(s.begin(),s.end(),s.begin(),tolower);
    cout<<s<<endl;
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/fyf18845165207/article/details/82731021