3 måder at sammenligne strenge på i C++

3 Måder at Sammenligne Strenge på i C++

I C++ er der flere måder at sammenligne strenge på, og hver metode har sine egne fordele og ulemper. Denne artikel gennemgår de tre mest almindelige metoder til strengsammenligning i C++:

1. Operatoren “==”

Operatoren “==” er den mest intuitive måde at sammenligne strenge på. Den tjekker, om to strenge er identiske i indhold og størrelse. Hvis strengene er identiske, returnerer operatoren true; ellers returnerer den false.

Eksempel:

cpp
#include <iostream>
#include <string>

using namespace std;

int main() {
string s1 = "Hello";
string s2 = "Hello";

if (s1 == s2) {
cout << "Strengene er identiske" << endl;
} else {
cout << "Strengene er ikke identiske" << endl;
}

return 0;
}

Output:


Strengene er identiske

2. Metoden “compare”

Metoden “compare” returnerer en heltalværdi, der angiver resultatet af sammenligningen. Hvis strengen påkaldes er mindre end strengen, der sammenlignes med, returneres en negativ værdi. Hvis strengene er identiske, returneres værdien 0. Hvis strengen påkaldes er større end strengen, der sammenlignes med, returneres en positiv værdi.

Eksempel:

cpp
#include <iostream>
#include <string>

using namespace std;

int main() {
string s1 = "Hello";
string s2 = "World";

int result = s1.compare(s2);

if (result < 0) {
cout << "s1 er mindre end s2" << endl;
} else if (result == 0) {
cout << "s1 er identisk med s2" << endl;
} else {
cout << "s1 er større end s2" << endl;
}

return 0;
}

Output:


s1 er mindre end s2

3. Metoden “strcmp”

Funktionen “strcmp” er en del af standardbiblioteket i C og returnerer også en heltalværdi, der angiver resultatet af sammenligningen. Ligesom metoden “compare” returnerer “strcmp” en negativ værdi, hvis strengen påkaldes er mindre end strengen, der sammenlignes med, 0 hvis strengene er identiske, og en positiv værdi, hvis strengen påkaldes er større end strengen, der sammenlignes med.

Eksempel:

cpp
#include <iostream>
#include <cstring>

using namespace std;

int main() {
char s1[] = "Hello";
char s2[] = "World";

int result = strcmp(s1, s2);

if (result < 0) {
cout << "s1 er mindre end s2" << endl;
} else if (result == 0) {
cout << "s1 er identisk med s2" << endl;
} else {
cout << "s1 er større end s2" << endl;
}

return 0;
}

Output:


s1 er mindre end s2

Konklusion

Valget af hvilken metode til strengsammenligning, der skal bruges i C++, afhænger af den specifikke situation. Operatoren “==” er enkel og nem at bruge, men den kan kun bruges til at kontrollere, om strenge er identiske. Metoden “compare” er mere fleksibel, da den kan returnere en værdi, der angiver, om en streng er mindre end, større end eller identisk med en anden streng. Funktionen “strcmp” er en effektiv måde at sammenligne strenge på, men den er ikke en del af C++-standarden og kan derfor ikke bruges i alle sammenhænge.

Ofte Stillede Spørgsmål (FAQs)

1. Hvad er forskellen mellem operatoren “==” og metoden “compare”?

Operatoren “==” returnerer true, hvis strengene er identiske, og false ellers. Metoden “compare” returnerer en heltalværdi, der angiver, om en streng er mindre end, større end eller identisk med en anden streng.

2. Hvad er fordelene og ulemperne ved metoden “strcmp”?

Fordelen ved metoden “strcmp” er dens effektivitet. Ulempen er, at den ikke er en del af C++-standarden og derfor ikke kan bruges i alle sammenhænge.

3. Kan jeg bruge operatoren “==” til at sammenligne strenge i en while-løkke?

Ja, du kan bruge operatoren “==” til at sammenligne strenge i en while-løkke.

4. Hvad returnerer metoden “compare” for to identiske strenge?

Metoden “compare” returnerer 0 for to identiske strenge.

5. Hvilken metode er den mest effektive til at sammenligne lange strenge?

Funktionen “strcmp” er den mest effektive metode til at sammenligne lange strenge.

6. Kan jeg sammenligne strenge af forskellig længde?

Nej, du kan ikke sammenligne strenge af forskellig længde med operatoren “==” eller metoden “compare”.

7. Hvad er værdien af resultatet af sammenligningen af strengene “Hello” og “world”?

Værdien af resultatet af sammenligningen af strengene “Hello” og “world” er 3, fordi “Hello” er mindre end “world” i alfabetisk rækkefølge.

8. Er det muligt at sammenligne strenge uden at skelne mellem store og små bogstaver?

Ja, du kan bruge metoden “compare()” med argumentet “ignore-case” for at sammenligne strenge uden at skelne mellem store og små bogstaver.

9. Hvilken metode anbefales til at sammenligne strenge, der bruges som nøgler i et kort?

Metoden “compare()” anbefales til at sammenligne strenge, der bruges som nøgler i et kort, fordi den returnerer en heltalværdi, der kan bruges til at sortere nøglerne.

10. Hvordan sammenligner jeg strenge i en case-insensitive måde?

Du kan sammenligne strenge i en case-insensitive måde ved at konvertere begge strenge til små eller store bogstaver før sammenligningen.

  Kan du deaktivere annoncer på Roku-startskærmen?