F.6 比较方法和函数
string类提供了用于比较2个字符串的方法和函数。下面是方法的原型:
这些方法使用traits::compare( )方法,后者是为用于字符串的字符类型定义的。如果根据traits::compare( )提供的顺序,第一个字符串位于第二个字符串之前,则第一个方法将返回一个小于0的值;如果这两个字符串相同,则它将返回0;如果第一个字符串位于第二个字符串的后面,则它将返回一个大于0的值。如果较长的字符串的前半部分与较短的字符串相同,则较短的字符串将位于较长的字符串之前。
第二个方法与第一个方法相似,但它进行比较时,只使用第一个字符串中从位置pos1开始的n1个字符。
下面的示例将字符串s1的前4个字符同字符串s2进行比较:
第三个方法与第一个方法相似,但它使用第一个字符串中从pos1位置开始的n1个字符和第二个字符串中从pos2位置开始的n2个字符进行比较。例如,下面的语句将对stout中的out和about中的out进行比较:
第四个方法与第一个方法相似,但它将一个字符数组而不是string对象作为第二个字符串。
第五和六个方法与第三个方法相似,但将一个字符串数组而不是string对象作为第二个字符串。
非成员比较函数是重载的关系运算符:
每一个运算符都被重载,使之将string对象与string对象进行比较、将string对象与C-风格字符串进行比较、将C-风格字符串与string对象进行比较。它们都是根据compare( )方法定义的,因此提供了一种在表示方面更为方便的比较方式。