目录
一、string 类的介绍
二、字符大小写转换与判断常用函数
💦 字符大小写判断
① isalpha()
② isalnum()
③ isdigit()
④ islower()
⑤ isupper()
💦 字符大小写转换
① tolower()
✨方法一:
✨方法二:
② toupper()
✨方法一:
✨方法二:
三、LeetCode例题使用示范
💦 验证回文串
💦 检验大写字母
四、共勉
一、string 类的介绍
string类 是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库对string类也有着很好的支持,并且string类还和c语言的字符串之间有着良好的接口。
本节主要是针对 string 类 对字符大小写判断与转换,如果想要详解更多,可以看看这篇文章针对 string 类 的超详细解析:string 类超详细解析
二、字符大小写转换与判断常用函数
- 在常用的string类字符操作时,又会经常用到大小写转换以及判断等问题,这时候就可以用相关的函数进行操作,常用的几个转换以及判断函数总结如下:
以下函数的声明在头文件<cctype>
函数名称 | 功能说明 |
isalpha() | 用来判断一个字符是否为字母,如果是字母则返回非零,否则返回零 |
isalnum() | 用来判断一个字符是否为字母或数字,也就是说判断一个字符是否属于a~z || A~Z || 0~9 |
isdigit() | 用来判断一个字符是否为数字,如果是数字则返回非零,否则返回零 |
islower() | 用来判断一个字符是否为小写字母,也就是是否属于a~z |
isupper() | 和islower()相反,用来判断一个字符是否为大写字母 |
tolower() | 把字符串都转化为小写字母 |
toupper() | 把字符串都转化为大写字母 |
💦 字符大小写判断
① isalpha()
isalpha()用来判断一个字符是否为字母,如果是字符则返回非零,否则返回零。
int main()
{
// 返回非零
cout << "判断 a 是否为字母:";
cout << isalpha('a') << endl;
// 返回零
cout << "判断 2 是否为字母:";
cout << isalpha('2') << endl;
return 0;
}
② isalnum()
isalnum()函数用来判断一个字符是否为数字或者字母,也就是说判断一个字符是否属于:a~z || A~Z || 0~9
int main()
{
cout << "判断 'a' 是否为字母或数字:";
// 返回非零
cout << isalnum('a') << endl;
cout << "判断 '2' 是否为字母或数字:";
// 返回非零
cout << isalnum('2') << endl;;
cout << "判断 '.' 是否为字母或数字:";
cout << isalnum('.') << endl;; // 零
return 0;
}
③ isdigit()
isdigit()函数用来判断一个字符是否为数字,如果是数字则返回非零,否则返回零
int main()
{
cout << "判断 'a' 是否为数字:";
// 返回零
cout << isdigit('a') << endl;
cout << "判断 '2' 是否为数字:";
// 返回非零
cout << isdigit('2') << endl;;
return 0;
}
④ islower()
islower() 函数用来判断一个字符是否为小写字母,也就是是否属于a~z。
int main()
{
cout << "判断 'A' 是否为小写字母:";
// 返回零
cout << islower('A') << endl;
cout << "判断 'a' 是否为小写字母:";
// 返回非零
cout << islower('a') << endl;;
return 0;
}
⑤ isupper()
isupper()和islower相反,用来判断一个字符是否为大写字母。
cout << "判断 'A' 是否为大写字母:";
// 返回非零
cout << isupper('A') << endl;
cout << "判断 'a' 是否为大写字母:";
// 返回零
cout << isupper('a') << endl;;
return 0;
💦 字符大小写转换
① tolower()
tolower()函数是把字符串都转化为小写字母。
✨方法一:
int main()
{
string s = "ABCDEFG";
for (int i = 0; i < s.size(); i++)
{
// 大写转换小写
s[i] = tolower(s[i]);
}
cout << s << endl;
return 0;
}
✨方法二:
通过STL的transform算法配合的toupper和tolower来实现该功能
int main()
{
string s = "ABCDEFG";
transform(s.begin(), s.end(), s.begin(), ::tolower);
cout << s << endl;
return 0;
}
② toupper()
toupper()函数是把字符串都转化为大写字母。
✨方法一:
int main()
{
string s = "abcdefg";
for (int i = 0; i < s.size(); i++)
{
// 小写转换大写
s[i] = toupper(s[i]);
}
cout << s << endl;
return 0;
}
✨方法二:
int main()
{
string s = "abcdefg";
transform(s.begin(), s.end(), s.begin(), ::toupper);
cout << s << endl;
return 0;
}
三、LeetCode例题使用示范
💦 验证回文串
题目链接:验证回文串
✨方法一:
class Solution {
public:
bool isPalindrome(string s) {
string str="\0";//定义一个新的字符串
for(int i=0;i<s.length();i++){//对字符串s进行遍历
if(isalnum(s[i])){//isalnum判定是不是字母或者数字字符
str += tolower(s[i]);//将大写字母转换为小写,如果不是则不动
}
}
string str_rev(str.rbegin(),str.rend());//对新字符串进行反转
if(str==str_rev)//如果反转以后的字符串和原字符串相等则返回true
return true;
else
return false;
}
};
✨方法二:
//更好的双指针做法。
class Solution {
public:
bool isPalindrome(string s) {
string str = "\0";
int n = s.length();
int begin = 0;
int end = n - 1;
while (begin < end) {
while (begin < end && (!isalnum(s[begin]))) {
begin++;//从前往后找符合条件的字符
}
while (begin < end && (!isalnum(s[end]))) {
end--;//从后往前找符合条件的字符
}
if (tolower(s[begin]) != tolower(s[end]))
return false;
begin++;
end--;
}
return true;
}
};
💦 检验大写字母
题目链接:检验大写字母
class Solution {
public:
bool detectCapitalUse(string word) {
int size=word.length();
int Big=0;//大写字符
int Small=0;//小写字符
for(int i=0;i<size;i++)//先遍历字符串中的字符
{
if(islower(word[i]))//islower()小写字符个数
{
Small++;
}
else if(isupper(word[i]))//isupper()大写字符个数
{
Big++;
}
}
if(Small==size||Big==size)//如果都是大写或者小写返回true
{
return true;
}
else if(Big==1&&isupper(word[0]))//如果大写只有一个且是第一个返回true
{
return true;
}
else
return false;
}
};
四、共勉
以下就是我对 string 类---字符判断与大小写转换 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++ vector 类的理解,请持续关注我哦!!!