C++のケースを無視する独自のstrcmpを作成します
ここでは、2つの文字列を比較するが、文字列の文字の大文字小文字を無視するstrcmp(文字列比較)関数を作成する必要があります。この関数は、string1
問題を理解するために例を見てみましょう
入力
string1 = “Hello” , string2 = “hello”
出力
0
文字列の比較中に大文字と小文字を無視する独自のstrcmp関数を作成します。 i番目のインデックスの文字が同じである場合、つまりstring1 [i] ==string2 [i]の場合は、両方の文字列のすべての文字を繰り返し処理します。続行します。 string1 [i]> string2 [i]の場合、1を返します。string1[i]
ここでは、ケースを無視する必要があるため、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("tutorialspoint", "TUTORIALSpoint")<<endl;
return 0;
}
出力
Compareing string using our strcmp function −
Result: 0
Result: -1
Result: 1
Result: -1
Result: 0
-
C++を使用して独自のsizeof演算子を実装する
独自のsizeof()演算子を実装できるオプションがあります。演算子sizeof()は単項演算子であり、任意のタイプのデータのサイズを計算するために使用されます。 #defineディレクティブを使用して、sizeof()演算子とまったく同じように機能する独自のsizeof()演算子を実装できます。 独自のsizeof()演算子を実装するための構文は次のとおりです #define Any_name(object) (char *)(&object+1) - (char *)(&object) ここで Any_name −独自のsizeof()演算子に付ける名前。 これ
-
C / C ++でのstrncmp()とstrcmp()の違い
strncmp() 関数strncmp()は、左の文字列と右の文字列を数値まで比較するために使用されます。 strcmp()と同じように機能します。左の文字列の一致する文字が右の文字列の文字よりも大きいASCII値を持っている場合、ゼロより大きい値を返します。左の文字列の一致する文字のASCII値が右の文字列の文字よりも小さい場合、ゼロ未満の値を返します。 C言語でのstrncmp()の構文は次のとおりです。 int strncmp ( const char *leftString, const char *rightString, size_t number ); ここで le