编写自己的strcmp,忽略C ++中的大小写
在这里,我们必须创建一个strcmp(字符串比较)函数,该函数比较两个字符串,但忽略该字符串字符的大小写。如果string1<string2,该函数将返回-1,如果string1=string2,则返回0,如果string1>string2,则返回1。
让我们举个例子来了解这个问题,
输入值
string1 = “Hello” , string2 = “hello”
输出结果
0
创建我们自己的strcmp函数,该函数在比较字符串时会忽略大小写。如果第ith个索引处的字符相同,即string1[i]==string2[i],我们将遍历两个字符串的所有字符,然后继续。如果string1[i]>string2[i],则返回1。如果string1[i]<string2[i],则返回-1。如果字符串结尾返回0。
在这里,我们必须忽略大小写,因此A和a将被视为相同。我们将使用字符的ASCII值,然后a=97的ASCII等于A=65的ASCII。
显示我们解决方案实施情况的程序,
示例
#include <iostream>
using namespace std;
int strcmpFunc(string string1, string string2){
int i;
for (i = 0; string1[i] && string2[i]; ++i){
if (string1[i] == string2[i] || (string1[i] ^ 32) == string2[i])
continue;
else
break;
}
if (string1[i] == string2[i])
return 0;
if ((string1[i] | 32) < (string2[i] | 32))
return -1;
return 1;
}
int main(){
cout<<"Compareing string using our strcmp function :\n";
cout<<"Result: "<<strcmpFunc("HELLO", "hello")<<endl;
cout<<"Result: "<<strcmpFunc("", "Hello")<<endl;
cout<<"Result: "<<strcmpFunc("Tutorials", "Pint")<<endl;
cout<<"Result: "<<strcmpFunc("afdadsa", "rewf")<<endl;
cout<<"Result: "<<strcmpFunc("nhooo", "nhooo")<<endl;
return 0;
}输出结果
Compareing string using our strcmp function − Result: 0 Result: -1 Result: 1 Result: -1 Result: 0