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

目录

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/469760.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实现:mysql-5.7.42 到 mysql-8.2.0 的升级(二进制方式)

实现&#xff1a;mysql-5.7.42 到 mysql-8.2.0 的升级&#xff08;二进制方式&#xff09; 1、操作环境1、查看当前数据库版本2、操作系统版本3、查看 Linux 系统上的 glibc&#xff08;GNU C 库&#xff09;版本&#xff08;**这里很重要&#xff0c;要下载对应的内核mysql版本…

Java之全体集合!

介绍 容器&#xff0c;就是可以容纳其他Java对象的对象。Java Collections Framework(JCF)为Java开发者提供了通用的容器&#xff0c;其始于JDK 1.2.优点是: 降低编程难度提高程序性能提高API间的互操作性降低学习难度降低设计和实现相关API的难度增加程序的重用性 Java容器里…

JavaSE-09笔记【异常(+2024新)】

文章目录 1. 异常概述2.异常继承结构2.1 编译时异常和运行时异常区别2.2 如何让异常发生&#xff08;throw关键字&#xff09; 3.自定义异常4.异常的处理4.1 第一种处理方式&#xff1a;声明异常 &#xff08;throws关键字&#xff09;4.2 第二种处理方式&#xff1a;捕捉异常 …

Go语言之函数、方法、接口

一、函数 函数的基本语法&#xff1a; func 函数名&#xff08;形参列表&#xff09;&#xff08;返回值列表&#xff09; {执行语句...return 返回值列表 } 1.形参列表&#xff1a;表示函数的输入 2.函数中的语句&#xff1a;表示为了实现某一功能的代码块 3.函数可以有返回…

SpringBoot集成WebService

1&#xff09;添加依赖 <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxws</artifactId><version>3.3.4</version><exclusions><exclusion><groupId>javax.validation<…

[蓝桥杯 2023 省 B] 飞机降落(暴搜DFS+贪心)

总结&#xff1a;为什么你看到题想不出来怎么写呢&#xff0c;我想不到这道题还会用到dfs的思想&#xff0c;顶多能知道可能会有贪心&#xff0c;还是得多做题。 这道题让我想起来导弹拦截和借教室&#xff0c;记得有空做做&#xff01;&#xff01;不要研究难题&#xff0c;把…

蓝桥杯--完全二叉树

import java.util.Scanner;import static java.lang.Math.log;public class top9 {//求树的每一层的和public static void main(String [] args){Scanner scannernew Scanner(System.in);int nscanner.nextInt();int [] arrnew int[n];for(int i0;i<n;i){arr[i]scanner.next…

超快速排序(蓝桥杯,归并排序,acwing)

题目描述&#xff1a; 在这个问题中&#xff0c;您必须分析特定的排序算法----超快速排序。 该算法通过交换两个相邻的序列元素来处理 n 个不同整数的序列&#xff0c;直到序列按升序排序。 对于输入序列 9 1 0 5 4&#xff0c;超快速排序生成输出 0 1 4 5 9。 您的任务是确…

英伟达深夜放王炸|字节跳动游戏之路波折不断|文旅短剧风口将至|25岁QQ魅力不减,5亿人在用|云计算市场疯长152%|电商巨头齐瞄向富足悠闲银发族

新闻一分钟速览 文旅短剧风口将至&#xff0c;一地狂拍十部&#xff0c;影视界看法分歧&#xff0c;悬念丛生&#xff01;字节跳动游戏之路波折不断&#xff0c;能否逆风翻盘引关注。折叠屏手机痛症治愈&#xff0c;实力席卷高端市场&#xff0c;势头强劲&#xff01;雷军豪言…

12|检索增强生成:通过RAG助力鲜花运营

什么是 RAG&#xff1f;其全称为 Retrieval-Augmented Generation&#xff0c;即检索增强生成&#xff0c;它结合了检 索和生成的能力&#xff0c;为文本序列生成任务引入外部知识。RAG 将传统的语言生成模型与大规模 的外部知识库相结合&#xff0c;使模型在生成响应或文本时可…

014 Linux_同步

​&#x1f308;个人主页&#xff1a;Fan_558 &#x1f525; 系列专栏&#xff1a;Linux &#x1f339;关注我&#x1f4aa;&#x1f3fb;带你学更多操作系统知识 文章目录 前言一、死锁&#xff08;1&#xff09;死锁概念 二、同步&#xff08;1&#xff09;同步概念&#xff…

Python入门(小白友好)

知识图谱 搭建环境 安装Python:Download Python | Python.org 安装PyCharm:Download PyCharm: The Python IDE for data science and web development by JetBrains 注意:专业版本是收费的,新手小白使用社区版(community)即可 创建第一个项目: 一些PyCharm的设置(也适用…

40年创新蝶变,IBM与中国共创新质生产力

2024年是“新质生产力”进入政府工作报告第一年&#xff0c;也是百年追求科技创新的IBM在华40周年&#xff0c;同时IBM全球正全力打造下一代企业生产力平台——突破性的企业混合云与AI。2023年&#xff0c;IBM推出基于开源混合云平台Red Hat Openshift的下一代企业级数据和AI平…

显隐特征融合的指静脉识别网络

文章目录 显隐特征融合的指静脉识别网络总结摘要介绍显隐式特征融合网络(EIFNet)掩膜生成模块(MGM)掩膜特征提取模块(MFEM)内容特征提取模块(CFEM)特征融合模块(FFM) THUFVS实验和结果数据集实现细节评估掩膜生成模型消融实验FFM模块门控层Batch Size损失函数超参数选择 论文 …

Python学习从0到1 day17 Python异常、模块、包

不走心的努力&#xff0c;都是在敷衍自己 ——24.3.19 万字长文&#xff0c;讲解异常、模块、包&#xff0c;看这一篇就足够啦 什么是异常? 当检测到一个错误时&#xff0c;python解释器就无法继续执行了&#xff0c;反而出现了一些错误的提示&#xff0c;这就是所谓的异常&am…

解决重装系统之后,开始菜单找不到Anaconda3相关图标

一、anaconda3安装后在开始菜单找不到&#xff0c;如下图所示 二、进入Anaconda3安装的位置 在安装位置按住shift键鼠标右键&#xff0c;打开poworshell&#xff0c;输入 start cmd最后的结果如图。

联发科MT8797迅鲲1300T规格参数_MTK5G安卓核心板方案定制

联发科MT8797&#xff08;迅鲲1300T&#xff09;平台采用Arm Cortex-A78和Cortex-A55组成的八核架构CPU&#xff0c;以及Arm Mali-G77MC9九核GPU&#xff0c;集成了AI处理器MediaTek APU&#xff0c;支持5G Sub-6GHz全频段和5G双载波聚合,支持1.08亿像素拍照和多镜头组合,以及1…

docker入门(五)—— 小练习,docker安装nginx、elasticsearch

练习 docker 安装 nginx # 搜素镜像 [rootiZbp15293q8kgzhur7n6kvZ home]# docker search nginx NAME DESCRIPTION STARS OFFICIAL nginx …

模拟面试

1.TCP通信中的三次握手和四次挥手过程 三次握手 1.客户端像向服务器端发送连接请求 2.服务器应答连接请求 3.客户端与服务器简历连接 四次挥手&#xff1a; 客户端或服务器端发起断开请求,这里假设客户端发送断开请求 1.客户端向服务器发送断开请求 2.服务器应答断开请求 3.服…

c++类和对象(中)类的6个默认成员函数及const成员函数

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a;类和对象 主厨&#xff1a;邪王真眼 所属专栏&#xff1a;c专栏 主厨的主页&#xff1a;Chef‘s blog 前言&#xff1a; 咱们之前也是…