c++STL库string的compare()方法

c++STL库学习相关(一)

string对象的compare()方法

在学习string基本字符系列容器的过程中,遇到了使用compare方法比较字符串的大小,这里自己碰到了一点问题,记录一下。

之前看的资料都是简单地说字符串相等返回0,小于返回-1,大于返回1,实际操作了一下并不完全是这样的。

1、字符串的比较规则

首先搬运一下字符串比较的规则,总体来说有:

1、0-9 < A-Z < a-z,且为升序,如0比9小,A比Z小。

2、从第一个字符开始逐个比较,若遇到不等的字符则停止后续字符的比较,并按该字符大小关系返回比较结果;若长度相等且每个字符均相等则相等;若前一部分相等则长度更长的字符串更大。

2、实际的输出结果

  1. 若字符串相等,输出0;
  2. 若起始字符就不等,则大于输出1,小于输出-1;
  3. 若前一部分字符串相等:
    字符串长度也相等,则按第一个不等字符的大小返回值输出1或-1;
    字符串长度不等,则实际返回值输出的是多了或者少了几个字符长度。
    比如下面的测试用例,测试环境是Dev-c++:
#include  
#include 
using namespace std;

int main(int argc, char** argv) {
string s1="cat";
    //首字符不同返回1或-1 
    cout<

运行结果如下图:

c++STL库string的compare()方法_第1张图片
可见在前一部分字符串相等且长度不等的情况下,实际输出的其实是多出或者少出的字符串长度,因此在调用compare()函数的时候,最好使用>0、<0、==0作为判断条件。

我自己做的测试是这样的,在查阅资料的时候没有见到过有关这个的具体说明,可能是看的资料不够细,也有可能是编译环境或者其他问题的原因,如有错误欢迎指正。

你可能感兴趣的:(c++stl库,c++)