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