在本教程中,我们将借助示例了解 C++ strcmp() 函数。
C++ 中的 strcmp()
函数比较两个 null-terminating 字符串 (C-strings)。比较是按字典顺序进行的。它在cstring 头文件中定义。
示例
#include <cstring>
#include <iostream>
using namespace std;
int main() {
char str1[] = "Megadeth";
char str2[] = "Metallica";
// compare str1 and str2 lexicographically
int result = strcmp(str1, str2);
cout << result;
return 0;
}
// Output: -1
strcmp() 语法
用法:
strcmp(const char* lhs, const char* rhs);
这里,
lhs
代表左侧rhs
代表右手边
参数:
strcmp()
函数采用以下参数:
- lhs- 指向需要比较的C-string的指针
- rhs- 指向需要比较的C-string的指针
返回:
strcmp()
函数返回:
- a 正值如果第一个不同的字符
lhs
大于对应的字符rhs
. - a 负值如果第一个不同的字符
lhs
小于对应的字符rhs
. - 0如果
lhs
和rhs
是平等的。
strcmp() 原型
cstring 头文件中定义的strcmp()
原型为:
int strcmp( const char* lhs, const char* rhs );
strcmp()
按字典顺序比较lhs
和rhs
的内容。- 结果的符号是在
lhs
和rhs
中不同的第一对字符之间的差异符号。
strcmp() 未定义行为
的行为strcmp()
是不明确的如果:
lhs
或rhs
中的任何一个都不指向 C-strings(以空字符结尾的字符串)
示例 1:C++ strcmp()
#include <cstring>
#include <iostream>
using namespace std;
int main() {
char str1[] = "Megadeth";
char str2[] = "Metallica";
// returns -1 because "Megadeth" < "Metallica" lexicographically
int result = strcmp(str1, str2);
cout << "Comparing " << str1 << " and " << str2 << ": " << result << endl;
// returns 1 because "Metallica" > "Megadeth" lexicographically
result = strcmp(str2, str1);
cout << "Comparing " << str2 << " and " << str1 << ": " << result << endl;
// returns 1 because "Megadeth" = "Megadeth" lexicographically
result = strcmp(str1, str1);
cout << "Comparing " << str1 << " and " << str1 << ": " << result;
return 0;
}
输出
Comparing Megadeth and Metallica: -1 Comparing Metallica and Megadeth: 1 Comparing Megadeth and Megadeth: 0
示例 2:在用户定义的函数中使用 strcmp()
#include <cstring>
#include <iostream>
using namespace std;
// function to display the result of strcmp()
void display(char *lhs, char *rhs) {
// compare display() parameters lhs and rhs
int result = strcmp(lhs, rhs);
if (result > 0)
cout << rhs << " precedes " << lhs << endl;
else if (result < 0)
cout << rhs << " follows " << lhs << endl;
else
cout << lhs << " and " << rhs << " are same" << endl;
}
int main() {
char str1[] = "Armstrong";
char str2[] = "Army";
// lhs = str1, rhs = str2
display(str1, str2);
// lhs = str2, rhs = str1
display(str2, str1);
// lhs = str1, rhs = str1
display(str1, str1);
// lhs = str2, rhs = str2
display(str2, str2);
return 0;
}
输出
Army follows Armstrong Armstrong precedes Army Armstrong and Armstrong are same Army and Army are same
相关用法
- C++ strcmp()用法及代码示例
- C++ strchr()用法及代码示例
- C++ strcat()用法及代码示例
- C++ strcat() vs strncat()用法及代码示例
- C++ strcspn()用法及代码示例
- C++ strcpy()用法及代码示例
- C++ strcoll()用法及代码示例
- C++ string::length()用法及代码示例
- C++ string::npos用法及代码示例
- C++ strncat()用法及代码示例
- C++ strstr()用法及代码示例
- C++ strtok()用法及代码示例
- C++ strtod()用法及代码示例
- C++ strtoimax()用法及代码示例
- C++ strpbrk()用法及代码示例
- C++ strxfrm()用法及代码示例
- C++ strspn()用法及代码示例
- C++ strncmp()用法及代码示例
- C++ strtoull()用法及代码示例
- C++ string at()用法及代码示例
注:本文由纯净天空筛选整理自 C++ strcmp()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。