C++ string字符比较函数compare

隐身守侯 提交于 2020-03-10 14:01:58

compare()函数

在洛谷刷题时遇到一题需要使用字符串比较的题于是查了一下c++的字符比较函数,发现写的都比较复杂,我看不太懂~随便写写 copy 便于自己复习
可能有错误不要打我

使用方法

若参与比较的两个串值(也就是ASCII值)相同,则函数返回 0;若字符串 S 按字典顺序要先于 S2,则返回负值;反之,则返回正值。比较方法为从两个字符串开始比较的位置一个个字符顺序相比ASCII值。
常见ASCII码的大小规则:0-9 < A-Z < a-z。
1)数字比字母要小。如 “7”<“F”;
2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。
几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48
下面举例说明如何使用 string 类的 compare() 函数。

  1. s.compare(n)
#include<iostream>
#include<string>//字符串函数嘛 肯定要字符串头文件啦 
using namespace std;
int main()
{
	string s("abc");
	string n("Abde"); 
	cout<<"s.compare(n)="<<s.compare(n)<<endl ;//完整的字符串s与n比较
}

输出结果
结果为1即字符串s>n
字符串的创建也有很多方式 可以参考一下 string字符串相关函数

  1. s.compare(1,2,n)
#include<iostream>
#include<string>//字符串函数嘛 肯定要字符串头文件啦 
using namespace std;
int main()
{
	string s("AbDeas");
	string n("Abdeas"); 
	cout<<"s.compare(1,2,n)="<<s.compare(1,2,n)<<endl;//bd与Abdeas相比 
}

结果
结果为1 bd与Abdeas相比 bd>Abdeas没毛病
s.compare(1,2,n) 中 1代表 下表 2代表数量 意思为 s字符串中下表为1 开始 字符数量为2的字符串 bd 与n相比

  1. s.compare(1,2,n,2,3)
#include<iostream>
#include<string>//字符串函数嘛 肯定要字符串头文件啦 
using namespace std;
int main()
{
	string s("Abdeas");
	string n("Abdeas"); 
	cout<<"s.compare(1,2,n,1,3)="<<s.compare(1,2,n,1,3)<<endl;//bd与bde相比 
}

结果
结果为-1 bd<bde 没毛病 这个 就表示 两个字符串的指定 字符串段 比较

这样 就结束了compare()函数 的使用方法
0,0
哦哦 再把我做的题放出来把 简单的应用 虽然我做的挺复杂的orz

洛谷 P1781 宇宙总统

题目链接
题目描述
地球历公元 6036 年,全宇宙准备竞选一个最贤能的人当总统,共有 nn 个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统。

输入格式
第一行为一个整数 nn,代表竞选总统的人数。

接下来有 nn 行,分别为第一个候选人到第 nn 个候选人的票数。

输出格式
共两行,第一行是一个整数 mm,为当上总统的人的号数。

第二行是当上总统的人的选票。

输入输出样例
输入 #1
5
98765
12365
87954
1022356
985678
输出 #1
4
1022356
说明/提示
票数可能会很大,可能会到 100100 位数字。
我的代码


```cpp
#include<bits/stdc++.h>
using namespace std;
int n,mixsum;//涉及极大数问题 字符串解决
string a,mix;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a;
		if(mix.empty()){
			mix=a;
			mixsum=i;
		}
		if(a.size()>mix.size()){
			mix=a;
			mixsum=i;
		}
		else if(a.size()<mix.size()){
			continue;
		}
		else if(a.size()==mix.size()){
			if(a.compare(mix)>0){
				mix=a;
				mixsum=i;
			}
			else{
				continue;
			}
		}
	}
	cout<<mixsum<<endl;
	cout<<mix<<endl; 
	return 0;
}

参考链接
C++ string字符串比较方法详解
百度百科ASCII

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!