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