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