1、substr()
string &a,
a.substr(start,length);
函数的功能是返回字符串a从start位置开始的长为length的子串,其中start参数必须提供,参数length为可选,如果没有提供length参数的话,将返回字符串a从start位置开始一直到字符串a的最后的子串。
2、compare()
str1.compare(3,4,str2)
- 两个字符串相同,返回0。
- 调用字符串小于被调用字符串,返回-1。
- 调用字符串大于被调用字符串,返回 1。
字符串说的大小通常和字典顺序是一致的。 字符串小的在字典里靠前,字符串大的在字典里靠后。即返回值是-1的话,调用字符串比被调用字符串靠前;返回值是1的话,调用字符串比被调用字符串靠后。
compare()比较时,是逐字符比较的,一旦能比较出结果,就不再比较了。 例如“abc”和“adf”,首先a和a比较,比不出结果;则b和d比较,结果就是“abc”小于“adf”,返回 -1,即字典里“abc”在“adf”前面。例如“abc”和“abcd”比较,若“abc”都比完了,“abcd”还没完,说明“abc”小,返回值为 -1,字典里“abc”靠前。总之记住这个比较规则和字典顺序一致即可。
#include<iostream>
using namespace std;
int main()
{
string s1="abandon";
string s2="about";
int b=s1.compare(s2);//直接比较,s1小于s2,故返回-1
cout<<b<<endl;
int c=s1.compare(2,4,s2);//s1下标为2的字符a开始的4个字符ando和s2进行比较。ando大于s2故返回1
cout<<c<<endl;
int d=s1.compare(2,4,s2,1,3);
cout<<d<<endl;//s1下标为2的字符a开始的4个字符ando和s2下标为1的字符b开始的3个字符bou比较。前者小,故返回-1。
string s3="abc";
string s4="abc";
int e=s3.compare(s4);//相等返回0
cout<<e<<endl;
return 0;
}