Write your own strcmp that ignores cases in C++
在这里,我们必须创建一个strcmp(字符串比较)函数,该函数比较两个字符串,但忽略该字符串字符的大小写。 如果string1
让我们举个例子来了解这个问题,
输入值
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 |