C + + een string vergelijking functie bevat al - " strcmp ( ) " - die de taak van het vergelijken van twee strings voor gelijkheid uitvoert. De strcmp () geeft verschillende waarden afhankelijk van de verhouding van de snaren elkaar . De implementatie van een strcmp ( ) functie verschilt tussen computer architecturen ( of blijft onder licentie van verschillende leveranciers ) , maar een programmeur kan de basisfunctionaliteit van de code herimplementeren om te zien hoe het werkt . Om de functie te begrijpen , echter , de programmeur moet begrijpen in C hoe strings , arrays en pointers werken en C + + . Strijkers , Arrays en pointers In C , strings zijn verzamelingen ( of arrays ) karakters . Bijvoorbeeld , char koord [ 10 ] ; een array van 10 karakters , "string " een zin C. Echter , arrays zijn eigenlijk pointers of variabelen betreffende geheugenadres . De array "string " vertegenwoordigt eigenlijk een pointer naar het eerste item in het geheugen blok , en de programmeur kan verwijzen naar de andere items in de array door deze pointer . Definiëren " strcmp ( ) " < br > De basis definitie van een strcmp functie zal er ongeveer zo uitzien : int strcmp ( const char * str1 , const char * str2 ) ; per definitie is een string vergelijking functie zal gebruik maken van twee character arrays ( str1 , str2 ) . Sinds de arrays vertegenwoordigen pointers , zal de definitie karakter twee pointers nemen . Met deze tips , kan de programmeur controleert elk item in een array tegen een andere array. Maar eerst moet de programmeur verklaren twee character variabelen , waarvan de waarden gevonden in de twee strings zal houden : int strcmp ( const char * str1 , const char * str2 ) { char a , b ; } doorkruisen van de snaren om de snaren te vergelijken , moet de functie elk teken te vergelijken in elke koord elkaar . Om dit te doen , de programmeur maakt gebruik van de twee wijzers ( str1 , str2 ) te bewegen naar beneden elke array : terwijl ( * str1 = ' \\ 0 ' && * str1 == * str2 ! ) { str1 + + ; //beweegt de wijzer van de string str1 naar het volgende teken str2 + + ; //doet hetzelfde , str2 } de while lus doet de zoeken : eerste , als str1 klappen een beëindiging teken ( " \\ 0 " , die wordt toegevoegd aan het einde van de snaren door de taal C ) , dan is de lus stopt , want die string wordt gedaan . Ten tweede, als de waarde van str1 ( * str1 ) niet gelijk is aan de waarde van str2 ( * str2 ) , dan is de lus stopt , omdat de snaren zijn ongelijk . Terugkerend het Resultaat < br Strcmp > retourneert een van drie resultaten : 0 ( als de snaren gelijk ) , 1 (als de eerste groter is dan de tweede ) en -1 ( indien het eerste kleiner is dan de tweede ) char a = * str1 ; char b = * str2 ; if ( a == b ) op Twitter { return 0 ; } anders {return ( ( a < b ) -1 : 1 ) ; } Sinds de lussen stoppen wanneer er ongelijkheid of wanneer beide klaar zijn, het resultaat zal eindigen als twee gelijke tekens ( de ' \\ 0 ' symbool ) of de ongelijke tekens gevonden . compleet code de volledige code , dan , lijkt op deze ( en implementaties zal variëren , afhankelijk van de techniek of het systeem voorwaarden ) : int strcmp ( const char * str1 , const char * str2 ) { char a , b ; terwijl ( * str1 = ' \\ 0 ' && * str1 == * str2 ) { str1 + + ; //beweegt de wijzer van de string str1 naar het volgende teken str2 + + ; //doet de zelfde , str2 } char a = * str1 ; char b = * str2 ; if ( a == b ) op Twitter { return 0 ; } anders {return ( ( a < b ) -1 : 1 ) ; } } invoeren van twee strings , zoals char tekenreeks1 [ 40 ] = " Dit is string" ; char string2 [ 40 ] = " Dit is string" ; int resultaat = strcmp ( tekenreeks1 , tekenreeks2 ) ; zal terugkeren 0 ;
|