编写一个可以在 C++ 中忽略大小写的 strcmp
我们需要编写的 strcmp(字符串比较)函数在比较两个字符串时应忽略大小写。若字符串1 < 字符串2,函数返回 -1;若字符串1 = 字符串2,函数返回 0;若字符串1 > 字符串2,函数返回 1。
让我们举个例子来理解这个问题:
输入
string1 = “Hello” , string2 = “hello”
输出
0
要编写我们的 strcmp 函数,需要在比较字符串时忽略大小写。我们要遍历两个字符串中的所有字符,如果这两个字符串中第 i 个索引处的字符相同,即 string1[i] == string2[i],则继续。如果 string1[i] > string2[i],则返回 1。如果 string1[i] < string2[i],则返回 -1。如果字符串结束了,则返回 0。
这里,我们需要忽略大小写,所以 A 和 a 将被视为相同。我们将使用字符的 ASCII 值,比如 a 的 ASCII 值 97 等于 A 的 ASCII 值 65。
程序来展示我们解决方案的实现:
示例
#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("tutorialspoint", "TUTORIALSpoint")<<endl; return 0; }
输出
Compareing string using our strcmp function − Result: 0 Result: -1 Result: 1 Result: -1 Result: 0
广告