编写自己的strcmp,忽略C++中的大小写

Write your own strcmp that ignores cases in C++

在这里,我们必须创建一个strcmp(字符串比较)函数,该函数比较两个字符串,但忽略该字符串字符的大小写。 如果string1 string2,则返回1。

让我们举个例子来了解这个问题,

输入值

1
string1 ="Hello" , string2 ="hello"

输出量

1
0

创建我们自己的strcmp函数,该函数在比较字符串时会忽略大小写。 如果第ith个索引处的字符相同,即string1 [i] == string2 [i],我们将遍历两个字符串的所有字符。 如果string1 [i]> string2 [i],则返回1。如果string1 [i]

在这里,我们必须忽略大小写,因此A和a将被视为相同。 我们将使用字符的ASCII值,然后a = 97的ASCII等于A = 65的ASCII。

展示我们解决方案实施情况的程序,

现场演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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 :
";
 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("tutorialspoint","TUTORIALSpoint")<<endl;
 return 0;
}

输出量

1
2
3
4
5
6
Compareing string using our strcmp function ?
Result: 0
Result: -1
Result: 1
Result: -1
Result: 0