Cstring字符串比较方法详解
字符串可以和类型相同的字符串相比较,也可以和具有同样字符类型的数组比较。
Basic_string 类模板既提供了 >、<、==、>=、<=、!= 等比较运算符,还提供了 compare() 函数,其中 compare() 函数支持多参数处理,支持用索引值和长度定位子串进行比较。该函数返回一个整数来表示比较结果。如果相比较的两个子串相同,compare() 函数返回 0,否则返回非零值。
compare()函数
类 basic_string 的成员函数 compare() 的原型如下:
int compare (const basic_string& s) const;
int compare (const Ch* p) const;
int compare (size_type pos, size_type n, const basic_string& s) const;
int compare (size_type pos, size_type n, const basic_string& s,size_type pos2, size_type n2) const;
int compare (size_type pos, size_type n, const Ch* p, size_type = npos) const;
如果在使用 compare() 函数时,参数中出现了位置和大小,比较时只能用指定的子串。例如:
spare {pos,n, s2);
若参与比较的两个串值相同,则函数返回 0;若字符串 S 按字典顺序要先于 S2,则返回负值;反之,则返回正值。下面举例说明如何使用 string 类的 compare() 函数。
【例 1】
复制纯文本复制
1.#include <iostream>
2.#include <string>
3.using namespace std;
4.int main ()
5.{
6.string A ('aBcdef');
7.string B ('AbcdEf');
8.string C ('123456');
9.string D ('123dfg');
10.//下面是各种比较方法
11.int m=Apare (B); //完整的A和B的比较
12.int n=Apare(1,5,B,4,2); //'Bcdef'和'AbcdEf'比较
13.int p=Apare(1,5,B,4,2); //'Bcdef'和'Ef'比较
14.int q=Cpare(0,3,D,0,3); //'123'和'123'比较
15.cout << 'm = ' << m << ', n = ' << n <<', p = ' << p << ', q = ' << q << endl;
16.();
17.return 0;
18.}
#include <iostream> #include <string> using namespace std; int main () { string A ('aBcdef'); string B ('AbcdEf'); string C ('123456'); string D ('123dfg'); //下面是各种比较方法 int m=Apare (B); //完整的A和B的比较 int n=Apare(1,5,B,4,2); //'Bcdef'和'AbcdEf'比较 int p=Apare(1,5,B,4,2); //'Bcdef'和'Ef'比较 int q=Cpare(0,3,D,0,3); //'123'和'123'比较 cout << 'm = ' << m << ', n = ' << n <<', p = ' << p << ', q = ' << q << endl; (); return 0; }
程序的执行结果为:
m = 1, n = -1, p = -1, q = 0
由此可知,string 类的比较 compare() 函数使用非常方便,而且能区分字母的大小写。建议读者多使用此函数。
比较运算符
String 类的常见运算符包括 >、<、==、>=、<=、!=。其意义分别为'大于'、'小于'、'等于'、'大于等于'、'小于等于'、'不等于'。
比较运算符使用起来非常方便,此处不再介绍其函数原型,读者直接使用即可。下面以例 2 进行说明。
【例 2】
复制纯文本复制
1.#include <iostream>
2.#include <string>
3.using namespace std;
4.void TrueOrFalse (int x)
5.{
6.cout << (x?'True':'False')<<endl;
7.}
8.
9.int main ()
10.{
11.string S1 = 'DEF';
12.string CP1 = 'ABC';
13.string CP2 = 'DEF';
14.string CP3 = 'DEFG';
15.string CP4 ='def';
16.cout << 'S1= ' << S1 << endl;
17.cout << 'CP1 = ' << CP1 <<endl;
18.cout << 'CP2 = ' << CP2 <<endl;
19.cout << 'CP3 = ' << CP3 <<endl;
20.cout << 'CP4 = ' << CP4 <<endl;
21.cout << 'S1 <= CP1 returned ';
22.TrueOrFalse (S1 <=CP1);
23.cout << 'S1 <= CP2 returned ';
24.TrueOrFalse (S1 <= CP2);
25.cout << 'S1 <= CP3 returned ';
26.TrueOrFalse (S1 <= CP3);
27.cout << 'CP1 <= S1 returned ';
28.TrueOrFalse (CP1 <= S1);
29.cout << 'CP2 <= S1 returned ';
30.TrueOrFalse (CP2 <= S1);
31.cout << 'CP4 <= S1 returned ';
32.TrueOrFalse (CP4 <= S1);
33.();
34.return 0;
35.}
#include <iostream>
#include <string>
using namespace std;
void TrueOrFalse (int x)
{
cout << (x?'True':'False')<<endl;
}
int main ()
{
string S1 = 'DEF';
string CP1 = 'ABC';
string CP2 = 'DEF';
string CP3 = 'DEFG';
string CP4 ='def';
cout << 'S1= ' << S1 << endl;
cout << 'CP1 = ' << CP1 <<endl;
cout << 'CP2 = ' << CP2 <<endl;
cout << 'CP3 = ' << CP3 <<endl;
cout << 'CP4 = ' << CP4 <<endl;
cout << 'S1 <= CP1 returned ';
TrueOrFalse (S1 <=CP1);
cout << 'S1 <= CP2 returned ';
cstring转为intTrueOrFalse (S1 <= CP2);
cout << 'S1 <= CP3 returned ';
TrueOrFalse (S1 <= CP3);
cout << 'CP1 <= S1 returned ';
TrueOrFalse (CP1 <= S1);
cout << 'CP2 <= S1 returned ';
TrueOrFalse (CP2 <= S1);
cout << 'CP4 <= S1 returned ';
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论