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

news2025/2/25 18:22:09

目录

一、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://www.coloradmin.cn/o/1528852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么说金融/财务人需要学Python??

Python 是财务人和金融人的多功能工具箱&#xff01;它有非常多的细分应用&#xff0c;接下来我将给你详细介绍为什么财务、金融方向需要学 Python 以及有哪些方向的细分应用&#xff01; 一、为什么金融/财务人需要 Python&#xff1f; 想在行业中崭露头角&#xff1f;那你可…

106 基于消息队列来做 mysql 大数据表数据的遍历处理

前言 最近有这样的一个需求, 我们存在一张 很大的 mysql 数据表, 数据量大概是在 六百万左右 然后 需要获取所有的记录, 将数据传输到 es 中 然后 当时 我就写了一个脚本来读取 这张大表, 然后 分页获取数据, 然后 按页进行数据处理 转换到 es 但是存在的问题是, 前面 还…

CTF题型 SSTI(2) Flask-SSTI典型题巩固

CTF题型 SSTI(2) Flask-SSTI典型题巩固 文章目录 CTF题型 SSTI(2) Flask-SSTI典型题巩固前记1.klf__sstiSSTI_Fuzz字典&#xff08;网上收集自己补充&#xff09; 2.klf_2数字问题如何解决了&#xff1f;|count |length都被禁&#xff1f; 3.klf_3 前记 从基础到自己构造paylo…

java String的深入了解

1、String 概述 &#xff08;1&#xff09;String 类在 java.lang 包下&#xff0c;所以使用的时候不需要导包。 &#xff08;2&#xff09;String 类代表字符串&#xff0c;Java程序中的所有字符串文字&#xff08;例如“abc”&#xff09;都被实现为此类的实例。也就是说&a…

【漏洞复现】用友U8Cloud base64 SQL注入漏洞

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP&#xff0c;主要聚焦成长型、创新型企业&#xff0c;提供企业级云ERP整体解决方案。 0x02 漏洞概述 用友U8 Cloud 存在SQL注入漏洞&#xff0c;未授权的攻击者可通过此漏洞获取数据库权限&#xff0c;从而盗取用户数据&a…

Leetcode 48. 旋转图像

心路历程&#xff1a; 第一次需要这种类型的题。 一开始从双指针、递归、栈队的角度去思考问题&#xff0c;没有发现明显的特征。 后来想到这个算是二维数组问题&#xff0c;应该也是双指针的一种。 总感觉有什么妙招可以一下子解决&#xff0c;但是没想出来就去找的网上的答案…

Android 之 GMS 认证知多少?

GMS认证 1.什么是GMS GMS全称Google Mobile Service&#xff0c;谷歌移动服务。 为什么要通过GMS认证 Android 系统是开源的&#xff0c;但是 Google 针对GMS所提供的服务却是收费的&#xff0c;比如Google Map&#xff0c;Google Play&#xff0c;Youtube&#xff0c;Gmai…

Stable Diffusion + Segment Anything试用

安装 从continue-revolution/sd-webui-segment-anything安装插件分割模型下载后放到这个位置&#xff1a;${sd-webui}/extension/sd-webui-segment-anything/models/sam下&#xff0c;可以下载3个不同大小的模型&#xff0c;从大到小如下&#xff1a;vit_h is 2.56GB, vit_l i…

嵌入式汇编语言简介

嵌入式汇编语言是一种在嵌入式系统开发中广泛使用的编程语言&#xff0c;它直接操作底层硬件资源&#xff0c;具有高效性和灵活性。本文将介绍嵌入式汇编语言的基本概念、特点以及应用场景。 以下是我整理的关于嵌入式开发的一些入门级资料&#xff0c;免费分享给大家&#xf…

零售饮料企业通过精准铺货与动态调整,结合指标平台的智能分析,实现对线下渠道的全面掌控

作为一名消费者&#xff0c;炎热的夏天我们会走进一家便利店&#xff0c;从冰柜中选出一瓶汽水&#xff1b;下午工作有点累了&#xff0c;我们会在公司的自动贩卖机扫码买一瓶快乐水......零售品牌从线上到线下渠道都开展了激烈的竞争&#xff0c;从供应链、物流到销售环节&…

转座子插入序列分析1-GENE-IS分析管道

如果你使用 GENE-IS: Saira Afzal et al。 &#xff0c;2016请引用这篇研究文章。GENE-IS: time-efficient and accurate analysis of viral integration events in large-scale gene therapy data. Molecular Therapy - Nucleic Acids 2016, vol. 6:133-139. DOI:https://doi.…

规划系列的常见术语:龙格现象、控制点、型值点和插值点、规划控制的开环、闭环、前馈、反馈与重规划

参考b站大佬Ally的规划控制系列 1 龙格现象 1.1 初探龙格现象 龙格现象由德国数学家Carl Runge&#xff08;卡尔龙格&#xff09;于1901年发现&#xff0c;龙格函数定义为&#xff1a; f ( x ) 1 25 x 2 1 f(x)\frac{1}{25 x^{2}1} f(x)25x211​ 我们在 [ − 1 , 1 ] [-1…

MNN createRuntime(二)

系列文章目录 MNN createFromBuffer&#xff08;一&#xff09; MNN createRuntime&#xff08;二&#xff09; MNN createSession 之 Schedule&#xff08;三&#xff09; MNN createSession 之创建流水线后端&#xff08;四&#xff09; MNN Session::resize 之流水线编码&am…

后端开发要不要转鸿蒙?

看到一条很有意思的提问&#xff0c;互联网太卷了&#xff0c;熬过了2023才发现&#xff0c;2024更难熬&#xff01;只因行业发展多年&#xff0c;人才过度饱和&#xff01;那后端的出路在哪里&#xff1f; 我推荐大家学【鸿蒙应用开发】新兴行业需求大&#xff0c;各大厂都在…

AI大模型智能大气科学探索之:ChatGPT在大气科学领域建模、数据分析、可视化与资源评估中的高效应用及论文写作

本文深度探讨人工智能在大气科学中的应用&#xff0c;特别是如何结合最新AI模型与Python技术处理和分析气候数据。课程介绍包括GPT-4等先进AI工具&#xff0c;旨在帮助大家掌握这些工具的功能及应用范围。本文内容覆盖使用GPT处理数据、生成论文摘要、文献综述、技术方法分析等…

camunda流程引擎事务管理和乐观锁

本文重点介绍camunda开源流程引擎的事务配置&#xff0c;以及在高并发多线程情况下&#xff0c;可能会发生多个线程尝试对相同流程实例数据进行更改的情况&#xff0c;Camunda如何通过数据库的乐观锁解决这种并发冲突的&#xff0c;并介绍了乐观锁和悲观锁的适用场景、性能影响…

MySQL数据库概念及安装

一、数据库的基本概率 1.1 数据 记录每个人的信息 或者记录数据 1.2 表 存放信息的集合 或者存放行和列的信息 1.3 数据库 表的集合 二、数据库管理系统&#xff08;DBMS&#xff09; 2.1 DBMS定义 &#xff08;DBMS&#xff09;是一种软件&#xff0c;用于创建和管理…

【Python脚本随手笔记】 --- 复制文件并修改权限

&#x1f48c; 所属专栏&#xff1a;【Python脚本随手笔记】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#…

HarmonyOS 通知意图

之前的文章 我们讲了 harmonyos 中的 基础和进度条通知 那么 今天 我们来说说 任何给通知添加意图 通知意图 简单说 就是 当我们点击某个通知 如下图 然后 就会拉起某个 应用 就例如说 我们某个微信好友发消息给我们 我们 点击系统通知 可以直接跳到你们的聊天界面 好 回到…

Vue+SpringBoot打造民宿预定管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色2.2.2 房主角色2.2.3 系统管理员角色 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿4.3 新增民宿评价4.4 查询留言4.5 新增民宿订单 五、免责说明 一、摘要 1.1 项目介绍 基于…