编写自己的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