字符串比较

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”。

posted @ 2018-05-06 15:38  刘-皇叔  阅读(412)  评论(0)    收藏  举报