当前位置:首页 » 《关于电脑》 » 正文

【C++】string 类---字符判断与大小写转换(超详细解析!)

26 人参与  2024年03月21日 15:33  分类 : 《关于电脑》  评论

点击全文阅读


目录

一、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 类的理解,请持续关注我哦!!! 

 


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/83035.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 林语熙周晏京(离婚后,老公天天跪求复合全集阅读)最新章节免费在线阅读_《离婚后,老公天天跪求复合全集阅读》最新热门小说 -
  • 顾绫雪嬴政《被始皇读心后,文武百官卷疯了!完结版阅读》完整版免费在线阅读_(顾绫雪嬴政)全集免费阅读 -
  • 情深意长皆成空完整版阅读(沈卿林砚辞)抖音热文_《情深意长皆成空完整版阅读》最新章节免费在线阅读 -
  • 姐姐为暴富重伤傅家金孙后火葬场了全集阅读小说(傅延江瑶)全文免费阅读无弹窗大结局_(姐姐为暴富重伤傅家金孙后火葬场了全集阅读免费阅读全文大结局)最新章节列表_笔趣阁(姐姐为暴富重伤傅家金孙后火葬场了全集阅读) -
  • 乔以诺萧瑾淮(不是你好是我好全集阅读)精彩试读_《不是你好是我好全集阅读》全本阅读 -
  • 白月光双双《重生后我成全老公和白月光,他却急了全集》全文免费阅读无弹窗大结局_(白月光双双)最新章节免费在线阅读 -
  • 苏小枫苏末小说免费笔趣阁_苏小枫苏末小说全章完本大结局
  • 死遁后他疯了最新小说全文阅读_最新免费小说沈轻洲林梦江之雪_完本小说(死遁后他疯了)
  • 免费小说《顾里宋婷婷小岳欧颖倩》已完结(顾里宋婷婷小岳欧颖倩)热门小说大结局全文阅读笔趣阁
  • 侄子为求富贵,变性后全家后悔最新小说_免费小说全文阅读(苏小枫苏末)_侄子为求富贵,变性后全家后悔苏小枫苏末小说推荐完结
  • 最新《沈轻洲林梦江之雪》小说(全集完整新上小说大结局(沈轻洲林梦江之雪))全文阅读笔趣阁
  • 拒绝嫁给姐夫后,我在八零年代暴富了(陈小棠沈正韩)阅读 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1