1、transform
如果使用string类
,可以使用#include <algorithm>
里的如下方法进行大小写转换;(leetcode不支持这个函数)
transform(str.begin(),str.end(),str.begin(),::tolower);
记得::tolower前面有::, 而且是::tolower,不是::tolower()
#include <iostream>
#include <algorithm>
using namespace std;
string s;
int main() {
cout<<"请输入一个含大写的字符串:";
string str;
cin>>str;
///转小写
transform(str.begin(),str.end(),str.begin(),::tolower);
cout<<"转化为小写后为:"<<str<<endl;
//转大写
transform(str.begin(),str.end(),str.begin(),::toupper);
cout<<"转化为大写后为:"<<str<<endl;
return 0;
}
2、tolower(char c)和toupper(char c)
如果用char数组
,也可以自己手写两个转化为大写和小写方法,
此种方法用到了tolower(char c)
和toupper(char c)
两个方法:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
void mytolower(char *s){
int len=strlen(s);
for(int i=0;i<len;i++){
if(s[i]>='A'&&s[i]<='Z'){
s[i]=tolower(s[i]);
//s[i]+=32;//+32转换为小写
//s[i]=s[i]-'A'+'a';
}
}
}
void mytoupper(char *s){
int len=strlen(s);
for(int i=0;i<len;i++){
if(s[i]>='a'&&s[i]<='z'){
s[i]=toupper(s[i]);
//s[i]-=32;//+32转换为小写
//s[i]=s[i]-'a'+'A';
}
}
}
int main() {
cout<<"请输入一个含大写的字符串:";
char s[201];
gets(s);
///转小写
mytolower(s);
cout<<"转化为小写后为:"<<s<<endl;
//转大写
mytoupper(s);
cout<<"转化为大写后为:"<<s<<endl;
return 0;
}
3、strupr(char* a)和strlwr(char* d)
旧版vs:
#include <iostream>
#include <string>
using namespace std;
void main()
{
char a[20]="jack"; //a的空间大小定义为20,务必容纳下连接后的所有字符
char d[] ="ABCDEF";
strupr(a); //小写字符转大写字符
cout<<a<<endl;
strlwr(d); //大写字符转小写字符
cout<<d<<endl;
}
运行结果:
JACK
abcdef
新版vs:
#include <iostream>
#include <string>
using namespace std;
#define _CRT_NONSTDC_NO_DEPRECATE
#define _CRT_SECURE_NO_WARNINGS
void main()
{
char a[20] = "My name is "; //a的空间大小定义为20,务必容纳下连接后的所有字符
char d[] = "ABCDEF";
_strupr_s(a); //小写字符转大写字符
cout << a << endl;
_strlwr_s(d); //大写字符转小写字符
cout << d << endl;
system("pause");
return ;
}
运行结果:
MY NAME IS
abcdef
因为新版vs对strupr(char* a)和strlwr(char* d)存在兼容性问题,所以不推荐使用
4、位运算技巧
依旧遍历字符串,利用位运算技巧。
大写变小写、小写变大写 : 字符 ^= 32;
大写变小写、小写变小写 : 字符 |= 32;
小写变大写、大写变大写 : 字符 &= -33;
#include<iostream>
#include<string>
using namespace std;
class Solution {
public:
string toChangeCase(string str) {
for(auto &i : str){
i |= 32;
}
return str;
}
};
int main()
{
Solution s;
string str = "HELLOhello";
cout << s.toChangeCase(str) << endl;
return 0;
}