📜  strcmp 不同长度 - C++ (1)

📅  最后修改于: 2023-12-03 15:35:09.946000             🧑  作者: Mango

strcmp不同长度 - C++

简介

在C++中,strcmp()函数用于比较两个字符串是否相等。但是如果两个字符串的长度不同的话,有时候可能会出现一些问题。本文将会介绍如何使用strcmp()函数来比较不同长度的字符串。

strcmp函数

strcmp是C++中的一个函数,用来比较两个字符串是否相等。其函数原型如下:

int strcmp(const char* str1, const char* str2);

其中,str1和str2为需要比较的两个字符串,返回值为整型,若str1=str2,返回0;若str1<str2,返回负数;若str1>str2,返回正数。

不同长度的字符串比较

当两个字符串的长度不同的时候,直接使用strcmp()函数来比较可能会出现问题,例如:

const char* str1 = "Hello";
const char* str2 = "Hello world";

int res = strcmp(str1, str2);
cout << res << endl;

输出结果为-6,这是因为strcmp()函数是按照字符的ASCII码值来比较的,从左至右依次比较对应位置的字符,当遇到不同的字符时,计算其ASCII码值的差,如果str1的该字符的ASCII码值大于str2中该字符的ASCII码值,则返回正数,反之则返回负数。

因此,在这个例子中,比较到第5个字符时发现str1中已经没有字符了,而str2中该位置上是一个空格,它的ASCII码值是32,而字符'H'的ASCII码值是72,则返回的就是-6。

为了解决这个问题,我们可以使用strlen()函数来获取字符串的长度,从而进行字符串的比较。例如:

const char* str1 = "Hello";
const char* str2 = "Hello world";

int len1 = strlen(str1);
int len2 = strlen(str2);

int res = (len1 == len2) ? strcmp(str1, str2) : (len1 - len2);
cout << res << endl;

输出结果为-6,这是因为len1和len2的值不同,因此我们直接返回其差值。如果他们的值相等,我们则使用strcmp()函数进行比较。

总结

这篇文章介绍了如何使用strcmp()函数来比较不同长度的字符串。如果在程序中需要进行字符串的比较,一定要注意字符串的长度是否相等,否则可能会出现莫名其妙的异常情况。