当前位置: 首页 > news >正文

【和春笋一起学C++】字符串比较

目录

C语言字符串比较

C语言字符比较

C++字符串比较


C语言字符串比较

在C语言中用于比较字符串的函数为strcmp函数,该函数定义在头文件<string.h>中,是一个标准库函数。strcmp函数的工作原理是逐字符比较两个字符串,直到找到不同的字符或遇到空符'\0'为止。函数的声明如下:

int strcmp(const char *s1, const char *s2);

函数接受两个字符串地址作为参数,即参数可以是指针字符串常量字符数组名

函数返回值:

  1. 如果两个字符串相同,函数返回0;
  2. 如果第一个字符串按字母顺序排在第二个字符串之前,函数返回一个负数值;
  3. 如果第一个字符串按字母顺序排在第二个字符串之后,函数返回一个正数值;

注意:C++中大写字母和小写字母的ASCII码不同,小写字母的编码比大写字母大。如果两个相同的字符串,一个小写一个大写,则strcmp函数将返回一个非零值。

如果str1和str2为字符指针,则函数返回值存在以下关系:

字符串关系表达式表达式值
str1和str2相等strcmp(str1,str2)==0true
str1和str2不相等

strcmp(str1,str2) !=0

strcmp(str1,str2)

都为true
str1在str2的前面strcmp(str1,str2)<0true
str1在str2的后面strcmp(str1,str2)>0true

另外,如果str1和str2为字符数组,如果存储在字符数组中的字符串相同,不管str1和str2两个数组的大小是否相等,strcmp函数都将返回0。因为strcmp函数在逐字符比较时遇到空值字符就停止了。

下面代码为寻找"look"字符串的一个字符串比较实例,并输出遍历寻找过程中的所有字符串。

#include <iostream>
#include <cstring>
using namespace std;
int main()
{char word[5] = "?ook";for (char ch = 'a'; strcmp(word, "look"); ch++){cout << word << endl;word[0] = ch;}cout << "End string is: " << word;return 0;
}

输出结果: 

代码说明:

  • 初始化数组时,设置数组的大小为5,这是因为字符串"?ook"最后需要加上一个空值字符来作为字符串的结束标志。 
  • 当使用ASCII字符编码集时,从a到z的字母的编码是连续的,所以可以使用递增操作符来遍历所有的字母。

C语言字符比较

C语言中虽然不能用关系操作符来比较字符串,但可以用它来比较字符,因为字符实际上是整型,下面代码为输出所有的字母。

#include <iostream>
#include <cstring>
using namespace std;
int main()
{for (char ch= 'a';ch<='z';ch++){cout << ch << "  ";}return 0;
}

C++字符串比较

C语句中不能用关系操作符比较字符串,但C++中的string类对象可以直接使用关系操作符来比较字符串。上面寻找"look"字符串的实例可以直接用关系操作符将string类对象与"look"字符串常量进行比较。

#include <iostream>
#include <cstring>
using namespace std;
int main()
{string word = "?ook";for (char ch= 'a';word!="look";ch++){cout << word << endl;word[0] = ch;}cout << "End string is: " << word;return 0;
}

相关文章:

【和春笋一起学C++】字符串比较

目录 C语言字符串比较 C语言字符比较 C字符串比较 C语言字符串比较 在C语言中用于比较字符串的函数为strcmp函数&#xff0c;该函数定义在头文件<string.h>中&#xff0c;是一个标准库函数。strcmp函数的工作原理是逐字符比较两个字符串&#xff0c;直到找到不同的字符…...

HTTP 协议报文结构 | 返回状态码详解

注&#xff1a;本文为 “HTTP 历史 | 协议报文结构 | 返回状态码” 相关文章合辑。 未整理去重。 HTTP 历史 wangjunliang 最后更新: 2024/3/16 上午10:29 超文本传输协议(英语:HyperTextTransferProtocol,缩写:HTTP)是 万维网(World Wide Web)的基础协议&#xff61;自 蒂姆…...

.net winform 实现CSS3.0 泼墨画效果

效果图 代码 private unsafe void BlendImages1(Bitmap img1, Bitmap img2) {// 确定两个图像的重叠区域Rectangle rect new Rectangle(0, 0,Math.Min(img1.Width, img2.Width),Math.Min(img1.Height, img2.Height));// 创建输出图像&#xff0c;尺寸为重叠区域大小Bitmap b…...

LearnOpenGL学习(高级OpenGL - - 实例化,抗锯齿)

实例化 对于在同一场景中使用相同顶点数据的对象&#xff08;如草地中的草&#xff09;&#xff0c;可以使用实例化&#xff08;Instancing&#xff09;技术&#xff0c;用一个绘制函数让OpenGL绘制多个物体&#xff0c;而非循环&#xff08;Drawcall: N->1&#xff09;。 …...

大数据与AI:从分析到预测的跃迁

引言&#xff1a;数据时代的新纪元 从每天的社交分享到企业的运营决策&#xff0c;数据早已成为现代社会不可或缺的资源。我们正置身于一个数据爆炸的时代&#xff0c;数以亿计的信息流实时生成&#xff0c;为人类带来了前所未有的洞察能力。然而&#xff0c;数据的价值并不仅限…...

【CC2530开发基础篇】继电器模块使用

一、前言 1.1 开发背景 本实验通过使用CC2530单片机控制继电器的吸合与断开&#xff0c;深入了解单片机GPIO的配置与应用。继电器作为一种常见的电气控制元件&#xff0c;广泛用于自动化系统中&#xff0c;用于控制大功率负载的开关操作。在本实验中&#xff0c;将通过GPIO口…...

C05S07-Tomcat服务架设

一、Tomcat 1. Tomcat概述 Tomcat也是一个Web应用程序&#xff0c;具有三大核心功能。 Java Servlet&#xff1a;Tomcat是一个Servlet容器&#xff0c;负责管理和执行Java Servlet、服务端的Java程序&#xff0c;处理客户端的HTTP请求和响应。Java Server&#xff1a;服务端…...

Java stream groupingBy sorted 实现多条件排序与分组的最佳实践

1. 数据初始化 这一部分代码用于创建 Product 对象并将它们添加到 result 列表中。 // 初始化数据 List<Product> result new ArrayList<>(); List<Product> resp new ArrayList<>();// 添加产品数据 result.add(new Product("手机A", 1…...

JAVA:代理模式(Proxy Pattern)的技术指南

1、简述 代理模式(Proxy Pattern)是一种结构型设计模式,用于为其他对象提供一种代理,以控制对这个对象的访问。通过代理模式,我们可以在不修改目标对象代码的情况下扩展功能,满足特定的需求。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什…...

爬取Q房二手房房源信息

文章目录 1. 实战概述2. 网站页面分析3. 编写代码爬取Q房二手房房源信息3.1 创建项目与程序3.2 运行程序&#xff0c;查看结果 4. 实战小结 1. 实战概述 本次实战项目旨在通过编写Python爬虫程序&#xff0c;抓取深圳Q房网上的二手房房源信息。我们将分析网页结构&#xff0c;…...

Ansible自动化运维(五) 运维实战

Ansible自动化运维这部分我将会分为五个部分来为大家讲解 &#xff08;一&#xff09;介绍、无密钥登录、安装部署、设置主机清单 &#xff08;二&#xff09;Ansible 中的 ad-hoc 模式 模块详解&#xff08;15&#xff09;个 &#xff08;三&#xff09;Playbook 模式详解 …...

K-means算法的python实现

K-means算法步骤 初始化质心&#xff1a;输入初始的质心位置。分配样本&#xff1a;将每个数据点分配到离它最近的质心对应的簇中。更新质心&#xff1a;对每个簇中的所有数据点&#xff0c;计算它们的均值&#xff0c;并将均值更新为新的质心。重复步骤2和3&#xff0c;直到质…...

客户端(浏览器)vue3本地预览txt,doc,docx,pptx,pdf,xlsx,csv,

预览文件 1、入口文件preview/index.vue2、预览txt3、预览doc4、预览pdf5、预览pptx6、预览xlsx7、预览csv 1、入口文件preview/index.vue 预览样式&#xff0c;如pdf 文件目录如图所示&#xff1a; 代码如下 <template><div class"preview-wrap" ref&…...

[SZ901]JTAG高速下载设置(53Mhz)

SZ901最高支持JTAG 53MHz的时钟频率&#xff0c;下载bit文件和固化程序的速度提升非常明显。 首先设置参数 1&#xff0c;将JTAG0 分频系数修改为3 2&#xff0c;设置参数&#xff0c;更新参数。&#xff08;完成&#xff09; 打开VIVADO VIVADO 正常识别FPGA&#xff0c;速…...

docker springboot 运维部署详细实例

环境安装 [rootiZbp1dcnzq7pzpg9607m6pZ ~]# docker -v Docker version 26.1.4, build 5650f9b镜像构建 Dockerfile 文件内容 FROM openjdk:8 # Author Info 创建人信息 MAINTAINER ratelcloudfoxmail.com ENV PORT20001 EXPOSE 20001 RUN mkdir /usr/local/ratel-boot-serv…...

Linux 查看目录命令 ls 详细介绍

Linux 和 Unix 系统中 ls 命令是用于列出目录内容。用户可以查看指定目录下的文件和子目录&#xff0c;还可以获取有关这些文件和子目录的详细信息。 基本语法&#xff1a; ls [选项] [目录]如果不指定目录&#xff0c;ls 将列出当前工作目录下的内容。 01、-a 或 --all ls…...

React Native状态管理器Redux、MobX、Context API、useState

Redux、MobX、Context API、useState都是React中用于状态管理的工具&#xff0c;但它们各自有不同的特点和使用场景。 Redux 介绍&#xff1a; Redux是一个JavaScript状态管理库&#xff0c;最初由Dan Abramov和Andrew Clark于2015年开发。它基于Flux架构&#xff0c;强调状态…...

Three.js资源-模型下载网站

在使用 Three.js 进行 3D 开发时&#xff0c;拥有丰富的模型资源库可以大大提升开发效率和作品质量。以下是一些推荐的 Three.js 模型下载网站&#xff0c;它们提供了各种类型的 3D 模型&#xff0c;适合不同项目需求。无论你是需要逼真的建筑模型&#xff0c;还是简单的几何体…...

linux 添加默认网关

在linux 可以使用 route 命令添加默认网关&#xff0c;假设添加的默认网关是192.168.159.2 添加方式如下&#xff1a; route add default gw 192.168.159.2 以上命令只需要把add 改成 del &#xff0c;就能删除刚才添加的路由 route del default gw 192.168.159.2 #该命…...

【学习笔记】深入浅出详解Pytorch中的View, reshape, unfold,flatten等方法。

文章目录 一、写在前面二、Reshape&#xff08;一&#xff09;用法&#xff08;二&#xff09;代码展示 三、Unfold&#xff08;一&#xff09;torch.unfold 的基本概念&#xff08;二&#xff09;torch.unfold 的工作原理&#xff08;三&#xff09; 示例代码&#xff08;四&a…...

Omni-Vision Sanctuary 集成 MySQL 数据库:自动化图像元数据管理与检索方案

Omni-Vision Sanctuary 集成 MySQL 数据库&#xff1a;自动化图像元数据管理与检索方案 1. 场景痛点与解决方案 数字内容创作领域正面临一个普遍挑战&#xff1a;随着AI生成图像的爆发式增长&#xff0c;如何高效管理海量图片资产成为棘手问题。某电商设计团队负责人曾向我们…...

如何3步完成语雀文档迁移:新手终极免费指南

如何3步完成语雀文档迁移&#xff1a;新手终极免费指南 【免费下载链接】yuque-exporter export yuque to local markdown 项目地址: https://gitcode.com/gh_mirrors/yuq/yuque-exporter 还在为语雀平台策略调整而烦恼吗&#xff1f;担心自己的创作内容无处安放&#x…...

OpenClaw语音交互:Phi-3-mini接入麦克风输入实战

OpenClaw语音交互&#xff1a;Phi-3-mini接入麦克风输入实战 1. 为什么需要语音交互能力 上周我在整理电脑文件时突然想到一个问题&#xff1a;当我的双手被占用时&#xff08;比如正在做饭或修理设备&#xff09;&#xff0c;如何让OpenClaw帮我执行任务&#xff1f;传统的键…...

3步搞定iOS微信聊天记录完整导出:WeChatExporter终极指南

3步搞定iOS微信聊天记录完整导出&#xff1a;WeChatExporter终极指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 还在为无法备份微信聊天记录而烦恼吗&#xff1f;微…...

Companion Object - 伴生对象 类比java中的什么?

这是一个非常经典且准确的对比问题。简单来说&#xff0c;Kotlin 中的 companion object&#xff08;伴生对象&#xff09;核心类比的是 Java 中的 static&#xff08;静态&#xff09;成员。在 Java 中&#xff0c;如果你想让一个成员&#xff08;方法或变量&#xff09;属于类…...

《B3845 [GESP样题 二级] 勾股数》

题目背景 对应的选择、判断题&#xff1a;https://ti.luogu.com.cn/problemset/1102 题目描述 勾股数是很有趣的数学概念。如果三个正整数 a,b,c&#xff0c;满足 a2b2c2&#xff0c;而且 1≤a≤b≤c&#xff0c;我们就将 a,b,c 组成的三元组 (a,b,c) 称为勾股数。你能通过编…...

构建企业级抓取服务:基于快马平台的openclaw生产环境部署实战

今天想和大家分享一个实战经验&#xff1a;如何用InsCode(快马)平台快速搭建企业级的openclaw分布式抓取服务。这个方案特别适合需要处理大规模数据采集的业务场景&#xff0c;比如电商价格监控、舆情分析或者竞品追踪。 分布式架构设计 生产环境最怕单点故障&#xff0c;所以我…...

若依管理系统实战:基于Vuex的用户角色权限与动态菜单路由解析

1. 若依管理系统权限控制核心逻辑解析 若依管理系统作为一款基于SpringBoot和Vue的企业级中后台解决方案&#xff0c;其权限控制体系设计得非常精巧。我在实际项目中使用这套方案时&#xff0c;发现它通过前后端协同工作&#xff0c;实现了细粒度的权限管理。整个流程可以概括为…...

1220亿美元!OpenAI创下史上最大融资纪录;DeepSeek连续三天发生服务异常;Claude Code 51万行源码泄露 | 极客头条

「极客头条」—— 技术人员的新闻圈&#xff01;CSDN 的读者朋友们好&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。&#xff08;投稿或寻求报道&#xff1a;zhanghycsdn.net&#xff09;整理 | 苏宓出品 | CSDN&#xff08;ID&…...

DOL-CHS-MODS整合包:从新手入门到定制开发的完整指南

DOL-CHS-MODS整合包&#xff1a;从新手入门到定制开发的完整指南 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 一、需求定位&#xff1a;你属于哪种玩家类型&#xff1f; 场景描述 不同玩家对游…...