Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 대소문자를 무시하는 고유한 strcmp 작성

<시간/>

여기서 우리는 두 문자열을 비교하지만 문자열의 문자의 대소문자를 무시하는 strcmp(문자열 비교) 함수를 만들어야 합니다. 이 함수는 string1 string2이면 1을 반환합니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

string1 = “Hello” , string2 = “hello”

출력

0

문자열을 비교하는 동안 대소문자를 무시하는 우리 고유의 strcmp 함수를 만들려면. i번째 인덱스의 문자가 동일한 경우(예:string1[i] ==string2[i]) 두 문자열의 모든 문자를 반복합니다. 계속합니다. string1[i]> string2[i]이면 1을 반환하고 string1[i]

여기서는 경우를 무시해야 하므로 A와 will은 동일한 것으로 간주됩니다. 문자의 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("tutorialspoint", "TUTORIALSpoint")<<endl;
   return 0;
}

출력

Compareing string using our strcmp function −
Result: 0
Result: -1
Result: 1
Result: -1
Result: 0