C++ STRCMP()函数

C++ STRCMP()函数

C++中, strcmp() 函数用于按字典顺序比较以null结尾的字符串或两个字符数组。它是C++的内置库函数。该函数的参数是要比较的两个字符数组。根据第一个不同的字符,该 strcmp() 函数返回两个字符串之间的整数值。

C++中的STRCMP()函数是什么

这是C++的内置库函数。它在头文件 < cstring>中定义和声明。该函数以字符串作为参数,并匹配字符串以检查是否相等。该函数对于每个索引都会匹配两个字符串中的字符,因此字典排序函数会匹配字符串。从字符串的第一个字符开始,直到找到相似或null类型的字符为止,比较将一直进行。

在C++中strcmp函数的语法:

使用 strcmp 函数进行C++编程时,该函数的语法如下所示:

intstrcmp(const char *str1, const char *str2 );

在此语法中, str1str2 分别是字符串的名称。

在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字符数组或者以空字符结尾的字符串,这个函数将表现出未定义行为。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程