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

C++中string对象之间比较、char*之间比较

#include <cstring> //char* 使用strcmp
#include <string> //string 使用compare
#include <iostream>
using namespace std;
int main() {string stringStr1 = "42";string stringStr2 = "42";string stringStr3 = "213";cout << "stringStr1: " << stringStr1 << " " << "&stringStr1 :" << &stringStr1 << endl; // stringStr1: 42 &stringStr1 :0x648d3ff910cout << "stringStr2: " << stringStr2 << " " << "&stringStr2 :" << &stringStr2 << endl; // stringStr2: 42 &stringStr2 :0x648d3ff8f0cout << "stringStr3: " << stringStr3 << " " << "&stringStr3 :" << &stringStr3 << endl; // stringStr3: 213 &stringStr3 :0x648d3ff8d0//  string类对象,可以用"=="进行比较,值相等时表达式的值为1,不相等则为0bool stringStr1_stringStr2 = stringStr1 == stringStr2;cout << "stringStr1 == stringStr2: " << stringStr1_stringStr2 << endl; // stringStr1 == stringStr2: 1// 若两个string对象长度不同,而且较短的string对象的每个字符都与较长string对象对应位置上的字符相同,就说较短string对象小于较长string对象:// 若两个string对象在某些对应的位置上不一致,则string 对象比较的结果其实是string对象中第一对相异字符比较的结果:bool stringStr1_stringStr3 = stringStr1 > stringStr3;cout << "stringStr1 > stringStr3: " << stringStr1_stringStr3 << endl; // stringStr1 > stringStr3: 1// str1.compare(str2),如果返回值为0则表示两个字符串相等。 1表示>,2表示<;bool stringStr1_stringStr3_compare = stringStr1.compare(stringStr3);cout<<"stringStr1.compare(stringStr3): "<<stringStr1.compare(stringStr3)<<endl; // stringStr1.compare(stringStr3): 1cout<<"------------------------------------------------------------------"<<endl;char* charStr1 = "42";char* charStr2 = "42";char* charStr3 = "213";// (void*)charStr1表示"42"本身的地址cout << "charStr1: " << charStr1 << " " << "(void*)charStr1 :" << (void*)charStr1 << endl; // charStr1: 42 (void*)charStr1 :0x7ff623c55001cout << "charStr2: " << charStr2 << " " << "(void*)charStr2 :" << (void*)charStr2 << endl; // charStr2: 42 (void*)charStr2 :0x7ff623c55001cout << "charStr3: " << charStr3 << " " << "(void*)charStr3 :" << (void*)charStr3 << endl; // charStr3: 213 (void*)charStr3 :0x7ff623c55004// &charStr1表示指向"42"的指针的地址cout << "charStr1: " << charStr1 << " " << "&charStr1 :" << &charStr1 << endl; // charStr1: 42 &charStr1 :0x648d3ff8c8cout << "charStr2: " << charStr2 << " " << "&charStr2 :" << &charStr2 << endl; // charStr2: 42 &charStr2 :0x648d3ff8c0cout << "charStr3: " << charStr3 << " " << "&charStr3 :" << &charStr3 << endl; // charStr3: 213 &charStr3 :0x648d3ff8b8// charStr1和charStr2存的就是”42“第一个字符的地址cout << "charStr1: " << charStr1 << " " << "*charStr1 :" << *charStr1 << endl; // charStr1: 42 *charStr1 :4cout << "charStr2: " << charStr2 << " " << "*charStr2 :" << *charStr2 << endl; // charStr2: 42 *charStr2 :4cout << "charStr3: " << charStr3 << " " << "*charStr3 :" << *charStr3 << endl; // charStr3: 213 *charStr3 :2// "=="不能用于两个char类型字符串的比较,对于char类型字符串来说,"=="比较的是两个字符串的起始地址。相当于比较的(void*)charStr1 :0x7ff6a9d25001,是字符串本身的地址bool charStr1_charStr2 = charStr1 == charStr2;cout << "charStr1 == charStr2: " << charStr1_charStr2 << endl; // charStr1 == charStr2: 1,因为charStr1和charStr2都指向”42“,内容都是”42“的存储地址,所以相等,相当于地址之间的比较bool charStr2_charStr3 = *charStr2 == *charStr3;cout << "*charStr2 == *charStr3: " << charStr2_charStr3 << endl; // *charStr2 == *charStr3: 0// 比的是原字符串的地址,没有意思bool charStr1_charStr3 = charStr1 > charStr3;cout << "charStr1 > charStr3: " << charStr1_charStr3 << endl; // charStr1 > charStr3: 0// 跟string的比较方式类似,逐个字符进行比较bool charStr1_charStr3_strcmp = strcmp(charStr1,charStr3);cout << "strcmp(charStr1,charStr3): " << charStr1_charStr3_strcmp << endl; // strcmp(charStr1,charStr3): 1int a = "42" > "213";int b = strcmp("42" , "213"); //逐个字符比较cout<<"'42' > '213': "<<a<<endl;cout<<"strcmp(\"42\" , \"213\"): "<<b<<endl;return 0;
}
  • string对象之间直接用>或<进行比较是按照字符顺序逐个比较;
  • char*类型的字符串之间直接用>或<比较的话,比的只是地址,用strcmp()方法的话也是诸逐个字符进行比较。

相关文章:

C++中string对象之间比较、char*之间比较

#include <cstring> //char* 使用strcmp #include <string> //string 使用compare #include <iostream> using namespace std; int main() {string stringStr1 "42";string stringStr2 "42";string stringStr3 "213";cout …...

MVVM模式理解

链接&#xff1a; MVVM框架理解及其原理实现 - 知乎 (zhihu.com) 重点&#xff1a; 1.将展示的界面窗口和创建的构件是数据进行分离 2.利用一个中间商进行数据的处理&#xff0c;所有的数据通过中间商进行处理...

js常用的数组处理方法

some 方法 用于检查数组中是否至少有一个元素满足指定条件。如果有满足条件的元素&#xff0c;返回值为 true&#xff0c;否则返回 false。 const numbers [1, 2, 3, 4, 5];const hasEvenNumber numbers.some((number) > number % 2 0); console.log(hasEvenNumber); /…...

[Document]VectoreStoreToDocument开发

该document是用来检索文档的。 第一步&#xff1a;定义组件对象&#xff0c;该组件返回有两种类型&#xff1a;document和text。 第二步&#xff1a;获取需要的信息&#xff0c;向量存储库&#xff0c;这里我使用的是内存向量存储&#xff08;用该组件拿到文档&#xff0c;并检…...

【LeetCode-简单题】225. 用队列实现栈

文章目录 题目方法一&#xff1a;单个队列实现 题目 方法一&#xff1a;单个队列实现 入栈 和入队正常进行出栈的元素其实就是队列的尾部元素&#xff0c;所以直接将尾部元素弹出即可&#xff0c;其实就可以将除了最后一个元素的其他元素出队再加入队&#xff0c;然后弹出队首元…...

数据预处理方式合集

删除空行 #del all None value data_all.dropna(axis1, howall, inplaceTrue) 删除空列 #del all None value data_all.dropna(axis0, howall, inplaceTrue) 缺失值处理 观测缺失值 观测数据缺失值有一个比较好用的工具包——missingno&#xff0c;直接传入DataFrame&…...

【前端】jquery获取data-*的属性值

通过jquery获取下面data-id的值 <div id"getId" data-id"122" >获取id</div> 方法一&#xff1a;dataset()方法 //data-前缀属性可以在JS中通过dataset取值&#xff0c;更加方便 console.log(getId.dataset.id);//112//赋值 getId.dataset.…...

GB28181学习(五)——实时视音频点播(信令传输部分)

要求 实时视音频点播的SIP消息应通过本域或其他域的SIP服务器进行路由、转发&#xff0c;目标设备的实时视音频流宜通过本域的媒体服务器进行转发&#xff1b;采用INVITE方法实现会话连接&#xff0c;采用RTP/RTCP协议实现媒体传输&#xff1b;信令流程分为客户端主动发起和第…...

单例模式(饿汉模式 懒汉模式)与一些特殊类设计

文章目录 一、不能被拷贝的类 二、只能在堆上创建类对象 三、只能在栈上创建类对象 四、不能被继承的类 五、单例模式 5、1 什么是单例模式 5、2 什么是设计模式 5、3 单例模式的实现 5、3、1 饿汉模式 5、3、1 懒汉模式 &#x1f64b;‍♂️ 作者&#xff1a;Ggggggtm &#x…...

133. 克隆图

133. 克隆图 题目-中等难度示例1. bfs 题目-中等难度 给你无向 连通 图中一个节点的引用&#xff0c;请你返回该图的 深拷贝&#xff08;克隆&#xff09;。 图中的每个节点都包含它的值 val&#xff08;int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。…...

交流耐压试验目的

试验目的 交流耐压试验是鉴定电力设备绝缘强度最有效和最直接的方法。 电力设备在运行中&#xff0c; 绝缘长期受着电场、 温度和机械振动的作用会逐渐发生劣化&#xff0c; 其中包括整体劣化和部分劣化&#xff0c;形成缺陷&#xff0c; 例如由于局部地方电场比较集中或者局部…...

使用 YCSB 和 PE 进行 HBase 性能压力测试

HBase主要性能压力测试有两个&#xff0c;一个是 HBase 自带的 PE&#xff0c;另一个是 YCSB&#xff0c;先简单说一个两者的区别。PE 是 HBase 自带的工具&#xff0c;开箱即用&#xff0c;使用起来非常简单&#xff0c;但是 PE 只能按单个线程统计压测结果&#xff0c;不能汇…...

正则表达式相关概念及不可见高度页面的获取

12.正则 概念:匹配有规律的字符串,匹配上则正确 1.正则的创建方式 构造函数创建 // 修饰符 igm// i 忽视 ignore// g global 全球 全局// m 换行 var regnew RegExp("匹配的内容","修饰符")var str "this is a Box";var reg new RegExp(&qu…...

深入学习 Redis - 分布式锁底层实现原理,以及实际应用

目录 一、Redis 分布式锁 1.1、什么是分布式锁 1.2、分布式锁的基础实现 1.2.1、引入场景 1.2.2、基础实现思想 1.2.3、引入 setnx 1.3、引入过期时间 1.4、引入校验 id 1.5、引入 lua 脚本 1.5.1、引入 lua 脚本的原因 1.5.2、lua 脚本介绍 1.6、过期时间续约问题&…...

Hive行转列[一行拆分成多行/一列拆分成多列]

场景&#xff1a; hive有张表armmttxn_tmp&#xff0c;其中有一个字段lot_number&#xff0c;该字段以逗号分隔开多个值&#xff0c;每个值又以冒号来分割料号和数量&#xff0c;如&#xff1a;A3220089:-40,A3220090:-40,A3220091:-40,A3220083:-40,A3220087:-40,A3220086:-4…...

TypeScript系列之类型 string

文章の目录 背景写在最后 背景 与JavaScript不同的是&#xff0c;TypeScript使用的是静态类型&#xff0c;比如说它指定了变量可以保存的数据类型。如下面代码所示&#xff0c;如果在JavaScript中&#xff0c;指定变量可以保存的数据类型&#xff0c;会报错&#xff1a;类型注…...

【C++】动态内存管理 ③ ( C++ 对象的动态创建和释放 | new 运算符 为类对象 分配内存 | delete 运算符 释放对象内存 )

文章目录 一、C 对象的动态创建和释放1、C 语言 对象的动态创建和释放 的方式2、C 语言 对象的动态创建和释放 的方式 二、代码示例 - 对象的动态创建和释放 一、C 对象的动态创建和释放 使用 C 语言中的 malloc 函数 可以为 类对象 分配内存 ; 使用 free 函数可以释放上述分配…...

AMS爆炸来袭,上线即巅峰

1.关于首发项目Antmons(AMS)空投结果 Gate.io Startup 首发项目Antmons代币AMS于Aug15th,AM 07:00开始下单&#xff0c;24小时内下单同等对待总共有15,950人下单&#xff0c;下单总价值超过1,000万美金分发系数约为0.001640495298341。根据上线规则AMS项目认购成功&#xff0c;…...

是面试官放水,还是公司实在是太缺人?这都没挂,华为原来这么容易进...

华为是大企业&#xff0c;是不是很难进去啊&#xff1f;” “在华为做软件测试&#xff0c;能得到很好的发展吗&#xff1f; 一进去就有9.5K&#xff0c;其实也没有想的那么难” 直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节和腾…...

怒刷LeetCode的第2天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;滑动窗口 方法二&#xff1a;双指针加哈希表 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;二分查找 方法二&#xff1a;归并排序 方法三&#xff1a;分治法 第三题 题目来源 题目内容 解…...

从能跑到跑得快:一次大模型硬件加速的工程实践

从能跑到跑得快&#xff1a;一次大模型硬件加速的工程实践 写大模型应用时&#xff0c;很多团队最先遇到的问题不是“模型会不会答”&#xff0c;而是“模型为什么这么慢”。 一套模型在开发阶段能跑起来&#xff0c;和它能在线上稳定、低延迟、可并发地服务用户&#xff0c;是…...

基于小程序的篮球场馆预订系统设计与实现

一、系统开发背景与意义 随着全民健身意识的提升&#xff0c;篮球运动成为大众喜爱的体育项目&#xff0c;但篮球场馆预订存在诸多痛点&#xff1a;传统预订依赖电话或现场排队&#xff0c;易出现信息滞后导致的场地冲突&#xff1b;用户难以实时了解场馆空闲时段、场地类型&am…...

如何快速构建 Vue Music 音乐应用:从安装到部署的完整指南

如何快速构建 Vue Music 音乐应用&#xff1a;从安装到部署的完整指南 【免费下载链接】vue-music cloud-music(网易云音乐) 项目地址: https://gitcode.com/gh_mirrors/vuem/vue-music Vue Music 是一个基于 Vue.js 开发的现代化音乐播放应用&#xff0c;它模仿网易云音…...

高级功能探索:PlanetScale database-js的自定义格式化与扩展

高级功能探索&#xff1a;PlanetScale database-js的自定义格式化与扩展 【免费下载链接】database-js A Fetch API-compatible PlanetScale database driver 项目地址: https://gitcode.com/gh_mirrors/da/database-js PlanetScale database-js 是一款兼容 Fetch API 的…...

二分答案题目

二分答案&#xff08;oj&#xff1a;洛谷&#xff09; 姊妹篇&#xff1a;二分答案&#xff08;浮点数&#xff09;二分答案与浮点数 二分查找 二分查找 二分答案与贪心 文章目录二分答案&#xff08;oj&#xff1a;洛谷&#xff09;前言题目一&#xff1a;P1873 [COCI 2011/20…...

图解关键路径算法:用乐高积木理解AOE网与工程进度控制

用乐高积木搭建关键路径算法&#xff1a;从玩具到项目管理实战 想象一下你正在用乐高积木搭建一座微型城市——需要先铺地基才能立起大楼&#xff0c;完成道路才能通车&#xff0c;而喷泉装饰可以最后添加。这个看似简单的建造过程&#xff0c;其实隐藏着工程项目管理的核心逻辑…...

C语言高级编程_动态内存池管理器

这段代码实现了一个**动态内存池管理器**&#xff0c;其核心设计理念是通过集中化管理多个动态分配的内存块&#xff0c;实现批量分配与统一释放的自动化内存管理机制。下面从数据结构设计、函数实现逻辑、技术优势及潜在风险四个维度进行深度解析。### 一、数据结构架构分析c …...

FlowMeter架构详解:从数据包捕获到AI分类的完整流程

FlowMeter架构详解&#xff1a;从数据包捕获到AI分类的完整流程 【免费下载链接】FlowMeter ⭐ ⭐ Use ML to classify flows and packets as benign or malicious. ⭐ ⭐ 项目地址: https://gitcode.com/gh_mirrors/fl/FlowMeter FlowMeter是一款利用机器学习技术对网…...

R语言设备故障预测落地难?揭秘90%工程师忽略的4个数据预处理致命陷阱

第一章&#xff1a;R语言设备故障预测落地难&#xff1f;揭秘90%工程师忽略的4个数据预处理致命陷阱在工业IoT场景中&#xff0c;大量工程师用R构建LSTM或随机森林模型预测设备剩余寿命&#xff08;RUL&#xff09;&#xff0c;却在生产环境持续遭遇AUC骤降、误报率飙升甚至模型…...

LoRA测试效率提升80%!Jimeng LoRA动态热切换系统5分钟上手教程

LoRA测试效率提升80%&#xff01;Jimeng LoRA动态热切换系统5分钟上手教程 还在为测试不同训练阶段的LoRA模型而反复重启服务、等待漫长的模型加载时间而烦恼吗&#xff1f;每次想对比jimeng_2和jimeng_10的效果&#xff0c;都得经历一次完整的“卸载-加载”循环&#xff0c;不…...