C++ STRCMP()函数
在C++中, strcmp() 函数用于按字典顺序比较以null结尾的字符串或两个字符数组。它是C++的内置库函数。该函数的参数是要比较的两个字符数组。根据第一个不同的字符,该 strcmp() 函数返回两个字符串之间的整数值。
C++中的STRCMP()函数是什么
这是C++的内置库函数。它在头文件 < cstring>中定义和声明。该函数以字符串作为参数,并匹配字符串以检查是否相等。该函数对于每个索引都会匹配两个字符串中的字符,因此字典排序函数会匹配字符串。从字符串的第一个字符开始,直到找到相似或null类型的字符为止,比较将一直进行。
在C++中strcmp函数的语法:
使用 strcmp 函数进行C++编程时,该函数的语法如下所示:
intstrcmp(const char *str1, const char *str2 );
在此语法中, str1 和 str2 分别是字符串的名称。
在C++中strcmp函数中使用的参数:
strcmp()函数使用两个参数进行比较,即str1和str2,用于比较指向字符数组的指针。
在C++中strcmp函数返回的值:
strcmp函数在C++中返回一个整数值。根据C++中第一个不同的字符,计算两个字符串之间的值。strcmp函数在C++中生成三种类型的返回值。
1) 零(0)
在这个函数中, 零 是返回值。在这种情况下,两个字符串是相同的。另外,两个字符串中有一个相等的索引。
示例:
#include
#include
using namespace std;
int main() {
char str1[] = "data structure algorithm";
char str2[] = "data structure algorithm";
intreturnvalue = strcmp(str1, str2);
if (returnvalue == 0) {
cout<< "equal String";
} else {
cout<< "unequal String";
}
cout<< "\nstrcmp() return value is: " <
输出:
equal String
strcmp() return value is: 0
2) 大于零 ( >0 )
如果在字符串的 左边 ,第一个不同字符的ASCII值大于右边字符串中相应字符的ASCII值,则返回的值大于零。字符串第一个不同字符的ASCII值之间的差值是返回的结果值。
示例:
#include
#include
using namespace std;
int main() {
char str1[] = "data structure algorithm";
char str2[] = "data structure ALGORIThm";
intreturnvalue = strcmp(str1, str2);
if (returnvalue == 0) {
cout<< "equal String";
} else {
cout<< "unequal String";
}
cout<< "\nstrcmp() return value is: " <
输出:
unequal String
strcmp() return value is: 32
解释:
在上面的代码中,声明和初始化了两个字符串,分别是 str1和str2 。然后它们通过 strcmp() 函数进行比较。函数的返回值被存储在变量 returnvalue 中。字符串中的第一个不匹配的字符位于 索引0 处,其中的字符在两个字符串中都存在。两个字符的ASCII值分别是 115和83 。因此,ASCII值的差值为 32 。使用条件语句来检查字符串是否相同,即检查returnvalue是否等于零。
3) 小于零(<0)
如果第一个不同字符的左侧字符串的ASCII值小于对应字符的右侧字符串,则返回值将小于零。这两个字符串的第一个不同字符的ASCII值之间的差值,即 str1-str2 ,被称为其 结果值 。
示例:
#include
#include
using namespace std;
int main() {
char str1[] = "data structure ALGORIThm";
char str2[] = "data structure algorithm";
intreturnvalue = strcmp(str1, str2);
if (returnvalue == 0) {
cout<< "equal String";
} else {
cout<< "unequal String";
}
cout<< "\nstrcmp() return value is: " <
输出:
unequal String
strcmp() return value is: -32
strcmp()函数的原型
在C++中,strcmp()函数的原型在头文件cstring中定义:
intstrcmp(const char *str1, const char *str2);
字符串的元素,例如 str1和str2 ,应该使用strcmp()来进行词典排序匹配。
在str1和str2中出现的第一个不同字符对的差异被称为返回值。
strcmp()的未定义行为
在C++中,如果其中一个参数不会指向以null结尾的字符串或C++字符数组,函数 strcmp 会显示异常或未定义行为。
示例:
#include
#include
using namespace std;
int main() {
string str1[] = "data structure";
string str2[] = "ALGORithm";
intreturnvalue = strcmp(str1, str2);
if (returnvalue == 0) {
cout<< "equal String";
} else {
cout<< "unequal String";
}
cout<< "\nstrcmp() return value is: " <
编译错误:
sss.cpp In function 'int main()':
sss.cpp [Error] cannot convert 'std::string* {aka std::basic_string<char>*}' to 'const char*' for argument '1' to 'intstrcmp(const char*, const char*)'
输出:
no output
使用用户定义的函数实现strcmp函数
#include
#include
using namespace std;
voidcompareStr(char * str1, char * str2) {
intreturnvalue = strcmp(str1, str2);
if (returnvalue == 0)
cout<< "equal strings";
else
cout<< "unequal strings";
cout<< "\nstrcmp() return value is: " <
输出:
equal strings
strcmp() return value is: 0
结论
- 在C++中, strcmp函数 是一个内建的库函数。
- 它在头文件 ‘string.h’ 中定义,并且有原型定义。
- 用于比较的话,这个函数以两个字符数组作为参数。
- 在C++中,这个函数返回一个整数值,根据两个字符串中第一个不同的字符来计算。
- 在C++中,如果其中一个参数不指向C字符数组或者以空字符结尾的字符串,这个函数将表现出未定义行为。