C++中字符串的比较,compare()函数
字符串可以和类型相同的字符串相比较,也可以和具有同样字符类型的数组比较。
Basic_string 类模板既提供了 >、<、==、>=、<=、!= 等比较运算符,还提供了 compare() 函数,其中 compare() 函数支持多参数处理,支持用索引值和长度定位子串进行比较。该函数返回一个整数来表示比较结果。如果相比较的两个子串相同,compare() 函数返回 0,否则返回非零值。
compare()函数
类 basic_string 的成员函数 compare() 的原型如下:
int compare (const basic_string& s) const;
int compare (const Ch* p) const;
int compare (size_type pos, size_type n, const basic_string& s) const;
int compare (size_type pos, size_type n, const basic_string& s,size_type pos2, size_type n2) const;
int compare (size_type pos, size_type n, const Ch* p, size_type = npos) const;
如果在使用 compare() 函数时,参数中出现了位置和大小,比较时只能用指定的子串。例如:
s.compare {pos,n, s2);
若参与比较的两个串值相同,则函数返回 0;若字符串 S 按字典顺序要先于 S2,则返回负值;反之,则返回正值。下面举例说明如何使用 string 类的 compare() 函数。
【例 1】
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string A ("aBcdef");
string B ("AbcdEf");
string C ("123456");
string D ("123dfg");
//下面是各种比较方法
int m=A.compare (B); //完整的A和B的比较
int n=A.compare(1,5,B,4,2); //"Bcdef"和"AbcdEf"比较
int p=A.compare(1,5,B,4,2); //"Bcdef"和"Ef"比较
int q=C.compare(0,3,D,0,3); //"123"和"123"比较
cout << "m = " << m << ", n = " << n <<", p = " << p << ", q = " << q << endl;
cin.get();
return 0;
}
程序的执行结果为:
m = 1, n = -1, p = -1, q = 0
由此可知,string 类的比较 compare() 函数使用非常方便,而且能区分字母的大小写。
找到一个比较直观理解的版本:
#include “stdafx.h”
#include
#include
using namespace std;
int main()
{
string a, b;
cin >> a;
cin >> b;
if (a.compare(b) > 0)
{
cout << “a>b”<<endl;
}
if (a.compare(b) == 0)
{
cout << “a=b” << endl;
}
if (a.compare(b) < 0)
{
cout << “a<b” << endl;
}
//a的子串(从索引3开始,包含4个字符)与b进行比较
if (a.compare(3, 4, b) == 0)
printf(“a的指定子串等于b\n”);
else
printf(“a的指定子串不等于b\n”);
//a指定子串与b的指定子串进行比较
if (a.compare(3, 4, b, 3, 4) == 0)
printf(“a的指定子串等于b的指定子串\n”);
else
printf(“a的指定子串不等于b的指定子串\n”);
//a指定子串与字符串的前n个字符进行比较
if(a.compare(0,2,“hi,hello”,2)==0)
printf(“a的指定子串等于指定字符串的前2个字符组成的子串\n”);
else
printf(“a的指定子串不等于指定字符串的前2个字符组成的子串\n”);return 0;
1
}
比较运算符
String 类的常见运算符包括 >、<、==、>=、<=、!=。其意义分别为"大于"、"小于"、"等于"、"大于等于"、"小于等于"、"不等于"。
比较运算符使用起来非常方便,此处不再介绍其函数原型,读者直接使用即可。下面以例 2 进行说明。
【例 2】
#include <iostream>
#include <string>
using namespace std;
void TrueOrFalse (int x)
{
cout << (x?"True":"False")<<endl;
}int main ()
{
string S1 = "DEF";
string CP1 = "ABC";
string CP2 = "DEF";
string CP3 = "DEFG";
string CP4 ="def";
cout << "S1= " << S1 << endl;
cout << "CP1 = " << CP1 <<endl;
cout << "CP2 = " << CP2 <<endl;
cout << "CP3 = " << CP3 <<endl;
cout << "CP4 = " << CP4 <<endl;
cout << "S1 <= CP1 returned ";
TrueOrFalse (S1 <=CP1);
cout << "S1 <= CP2 returned ";
TrueOrFalse (S1 <= CP2);
cout << "S1 <= CP3 returned ";
TrueOrFalse (S1 <= CP3);
cout << "CP1 <= S1 returned ";
TrueOrFalse (CP1 <= S1);
cout << "CP2 <= S1 returned ";
TrueOrFalse (CP2 <= S1);
cout << "CP4 <= S1 returned ";
TrueOrFalse (CP4 <= S1);
cin.get();
return 0;
}
程序运行结果为:
S1= DEF
CP1 = ABC
CP2 = DEF
CP3 = DEFG
CP4 = def
S1 <= CP1 returned False
S1 <= CP2 returned True
S1 <= CP3 returned True
CP1 <= S1 returned True
CP2 <= S1 returned True
CP4 <= S1 returned False
由上述内容可知,使用比较运算符可以非常容易地实现字符串的大小比较。在使用时比较运算符时,对于参加比较的两个字符串,任一个字符串均不能为 NULL
,否则程序会异常退出。---注意判空
C++中字符串的比较,compare()函数相关推荐
- java 对比函数_java中字符串比较函数和操作函数,详细解析
java编程语言中关于字符的内容也是极其丰富的,所以学习这方面的知识也十分重要的.今天就来为大家介绍一些与java字符串有关的内容,也就是java中字符串比较函数和操作函数,并为大家进行详细的解析,一 ...
- php 中的字符串转数组函数,php中字符串转数组的函数是什么
php中将字符串转换为数组的函数有:1.str_split()函数,语法"str_split(string,length)":2.explode()函数,可返回字符串数组:3.pr ...
- C语言中字符串相关的拷贝函数
C语言下字符串拷贝函数汇总对比 1.1.strcpy 函数原型char *strcpy(char *dest, const char *src) 需要注意的是如果目标数组 dest 不够大,而源字符串 ...
- C语言中字符串有关输入输出的函数应用
通过上面2个例子可以得知,通过scanf输入字符串空格就是分隔符会直接停止,而用puts输出字符串就可以把空格也当成一个字符输入: 而printf和puts都是从参数地址开始输出,上图都是字符数组名即 ...
- pandas使用query函数基于dataframe字符串数据列中字符串的长度筛选dataframe的数据行(specific column string length)
pandas使用query函数基于dataframe字符串数据列中字符串的长度筛选dataframe的数据行(select dataframe rows based on specific colum ...
- R语言使用str_locate函数和str_locate_all函数来定位特定字符串或者字符串模式在字符串中的位置:str_locate函数第一个位置、str_locate_all函数定位所有位置
R语言使用str_locate函数和str_locate_all函数来定位特定字符串或者字符串模式在字符串中的位置:str_locate函数第一个位置.str_locate_all函数定位所有位置 目 ...
- 输入一个字符串,用子函数完成在字符串中找出ACSII码值最大的字符,将其放在第一个位置,并将该字符前的所有字符向后顺序移动
<程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容9]输入一个字符串,用子函数完成在字符串中找出ACSII码 ...
- php 字符串替换 正则表达式,PHP中一些可以替代正则表达式函数的字符串操作函数...
0x01:根据预定义的字符对字符串进行词法分析 /* * 在处理大量信息时,正则表达式函数会使速度大幅减慢.应当在需要使用正则表达式解析比较复杂的字符串时才能使用这些函数.如果要解析简单的表达式,还可 ...
- Python中字符串常用处理函数
** Python中字符串常用处理函数 ** 1.len( )函数 用len( )函数计算字符串的长度 2.strip( )函数 删除字符串两边的空白符(包括:'\n'.'\t'.'\r') 注:只能 ...
最新文章
- Go 学习笔记(31)— 字符串 string、字符 rune、字节 byte、UTF-8 和 Unicode 区别以及获取字符串长度
- pythontype函数使用_基础教程:python isinstance与type函数用法
- [转]:xmake插件开发之色彩高亮显示
- linux同名文件没有自动替换,linux – bash脚本替换文件中出现的所有占位符
- php学习笔记之static的问题
- Angular中怎样通过localStorage实现数据持久化-实现存储搜索历史为例
- 找到所有数组中消失的数字—leetcode448
- SpringBoot 配置Tomcat运行
- ABAP Authorization trace工具
- gwt-2.8.2下载_从GWT开发人员的角度概述Scala.js
- linux shell express,Linux下使Shell 命令脱离终端在后台运行
- HDU 2577 How to Type
- Asp.net MVC3.0 入门指南 6 审视编辑方法和视图
- 大杀器TheFatRat
- 视频教程-【企业定制课】AI软件illustratorCC应用与平面印刷视频教程-UI
- Windows安全中心内存完整性无法打开问题的处理方法
- 魅族系统怎么无需root激活Xposed框架的经验
- Java并发编程:volatile关键字解析(学习总结-海子)
- html没有注册类,电脑提示没有注册类别的解决方法大全
- day08 系统篇端口扫描CDN服务负载均衡WAF防火墙
热门文章
- 推荐算法概述(基于用户的协同过滤算法、基于物品的协同过滤算法、基于内容的推荐算法)
- web服务器响应头文件,response.setHeader()步骤设置http文件头的值
- Android 免密支付+Keystore体系
- 推荐大家一个管理时间的软件
- Java“求从1到10的阶乘的和”
- 纯CSS3文字 渐变内发光投影效果
- 查询商品案例(按价格或名称查询)
- Netty的深入浅出--7.ProtocalBuffers的分析
- 酒店管理系统php教程,Qt之酒店管理系统
- 最短路径问题学习心得