使用C-风格字符串中的strcmp()函数来比较。该函数接受两个字符串地址作为参数。这意味这参数可以是指针
、字符串常量
或字符数组名
。如果两个字符串相同。该函数返回0,;如果第一个字符串按字母排序排在第二个
字符之后,则strcpm()将返回一个正数值
。实际上,“按系统排序顺序”比“按字母顺序”更准确。这意味着字符是根据字符的系统编码来进行比较的。例如,使用ASCII码时,所有大写字母的编码都比小写字母小
,所以按排序顺序,大写字母将位于小写字母之前。因此,字符串“Zoo”在字符串“ariary”之前。根据编码进行比较还意味着大写字母和小写字母是不同的,因此字符串“FOO”和字符串“foo”不同。
在有些语言(入BASIC和标准Pascal)中,存储在不同长度的数组中的字符串彼此不相同。但是C-风格字符串是通过结尾的空值字符定义的,而不是由其所在数组的长度定义的。这意味着两个字符串即使被存储在长度不同的数组中,也可能是相同的:
char big[80] = “Daffy”; //5 letters plus \0
char little[6] = “Daffy”; //5 letters plus \0
顺便一说,虽然不能用关系运算符来比较字符串,但却可以用来比较字符,因为字符实际上是整型。因此下面的代码可以用来显示字母表中的字符,至少对于ASCII字符集和Unicode字符集来说是有效的:
for(ch = ‘a’ ch <+ ‘z’;ch++)
cout << ch;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
using namespace std;
char word[5]="?ate";
for(char ch = 'a';strcmp(word,"mate");ch++)
{
cout << word << endl;
word[0]=ch;
}
cout << "After loop ends,word is "<<word<<endl;
return 0;
}
检测相等或排列顺序:
可以使用strcmp()来测试C-风格字符串是否相等(排列顺序)。如果str1和str2相等,则下面的表达式为true:
strcmp(str1,str2) == 0
如果str1和str2不相等,则下面两个表达式都为true:
strcmp(str1,str2) != 0
strcmp(str1,str2)
如果str1在str2前面,则下面的表达式为true:
strcmp(str1,str2) < 0
如果str1在str2后面,则下面的表达式为true:
strcmp(str1,str2) > 01
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
using namespace std;
string word="?ate";
for (char ch = 'a';word!="mate";ch++)
{
cout << word <<endl;
word[0]=ch;
}
cout << "After loop ends,word is "<<word<<endl;
return 0;
}