字符串比较
string 类型定义了所有关系操作符,使程序员可以比较两个 string 对象是否相等(==)、不等(!=),以及实现小于或大于(<、<=、>、>=)运算。
string 对象采用字典顺序比较,也就是说,string 对象的比较与大小写敏感的字典顺序比较相同。操作符逐个字符地进行比较,直到比较到某个位置上,两个 string 对象对应的字符不相同为止。
compare 函数
除了关系操作符,string 类型还提供了一组 compare 操作,用于实现字典顺序的比较。这些操作的结果类似于 C 语言中的库函数 strcmp。
|
s.compare(s2) |
比较 s 和 s2 |
|
s.compare(pos1, n1, s2) |
让 s 中从 pos 下标位置开始的 n1 个字符与 s2 做比较 |
|
s.compare(pos1, n1, s2, pos2, n2) |
让 s 中从 pos1 下标位置开始的 n1 个字符与 s2 中从 pos2下标位置开始的 n2 个字符做比较 |
|
s.compare(cp) |
比较 s 和 cp 所指向的以空字符结束的字符串 |
|
s.compare(pos1, n1, cp) |
让 s 中从 pos1 下标位置开始的 n1 个字符与 cp 所指向的字符串做比较 |
|
s.compare(pos1, n1, cp, n2) |
让 s 中从 pos1 下标位置开始的 n1 个字符与 cp 所指向的字符串的前 n2 个字符做比较 |
s1.compare (args);假设有语句:
compare 函数返回下面列出的三种可能值之一:
正数,此时 s1 大于 args 所代表的 string 对象。
负数,此时 s1 小于 args 所代表的 string 对象。
0,此时 s1 恰好等于 args 所代表的 string 对象。
char second_ed[] = "C++ Primer, 2nd Edition";
string third_ed("C++ Primer, 3rd Edition");
string fourth_ed("C++ Primer, 4th Edition");
// compares C++ library string to C-style string
fourth_ed.compare(second_ed); // ok, second_ed is null-terminated
// compare substrings of fourth_ed and third_ed
fourth_ed.compare(fourth_ed.find("4th"), 3,
third_ed, third_ed.find("3rd"), 3);
第二个 compare调用使用了具有 5 个参数的 compare 函数版本。先调用 find 函数找到子串“4th”的起点。让从此起点开始的 3 个字符与 third_ed 的子串做比较。而 third_ed 的子串起始于find 函数找到的“3rd”的起点,同样取其随后的 3 个字符参加比较。可见这个语句本质上比较的是“4th”和“3rd”。

浙公网安备 33010602011771号