En serie med etiketter sammenlignes med verdien av en inngangsvariabel eller uttrykk ved bruk av Switch Statement. Inngangsvariabelen testes mot saksetikettene, som er verdier, og hvis det blir funnet en kamp, kjøres saksuttalelseskoden.
De Switch Statement I C ++ brukes ofte når du jobber med tegn og tall, men det kan også brukes med strenger for å evaluere mange forhold raskere. I denne artikkelen vil vi demonstrere hvordan du bruker strenger med C++ Switch Statement.
Bryter uttalelse med strenger
De Bytt case Evaluerer bare heltalluttrykk, og det er derfor en fangst når du bruker strengklassen. Strengsammenligninger kan ikke gjøres direkte i en Switch Statement. For å kunne evaluere strengen på riktig måte, Vi må først forvandle det til et numerisk tall.
Så vi kan bruke strengklassen og dens medlemsmetoder for å bruke bryterklæringen med strenger. Strengklassen har en rekke metoder som kan brukes til å administrere strenger, inkludert sammenligning (), finn () og substr () -funksjoner.
Vi kan først erklære en strengvariabel og gi den en startverdi. De Switch Statement kan da brukes med strengvariabelen. Tenk på følgende kode, for eksempel:
#inkludere
ved hjelp av navneområdet STD;
int main ()
streng frukt = "eple";
bryter (frukt)
sak "Banan":
cout << "This is a banana." << endl;
gå i stykker;
sak "oransje":
cout << "This is an orange." << endl;
gå i stykker;
sak "eple":
cout << "This is an apple." << endl;
gå i stykker;
misligholde:
cout << "This is not a valid fruit." << endl;
gå i stykker;
retur 0;
I denne illustrasjonen er den opprinnelige verdien av strengvariabelen “Fruit” “Apple”. Det er en frukt skrives ut etter at bryterklæringen analyserer variabelen "frukt". Den skriver ut "det er en grønnsak" hvis "gulrot" er verdien av "frukt.”Hvis ingen av kriteriene er oppfylt, skrives“ ugyldig innspill ”.
Produksjon
Ovennevnte kode vil gi en feil at brytermengden ikke er et heltall. For å fikse denne følgende løsningen kan brukes.
Bryter setning på streng ved å bruke sammenligning () -funksjonen
Heldigvis "sammenligne()”Medlemsfunksjonen til strengklassen produserer en heltallverdi som representerer sammenligningsutfallet av to strenger. Sammenligningsfunksjonen gir et resultat av 0 hvis strengene er like, et tall som enten er negativt eller positivt, avhengig av om den første strengen er mer eller mindre enn den andre strengen.
Derfor kan vi bruke sammenligning () -funksjonen til å sammenligne Strenger i brytertilfeller. Her er et eksempel på å bruke sammenligningsfunksjonen:
#inkludere
ved hjelp av navneområdet STD;
int main ()
streng frukt = "eple";
Bytt (frukt.Sammenlign ("eple"))
sak 0:
cout << "It's a fruit." << endl;
gå i stykker;
sak -1:
cout << "It's a vegetable." << endl;
gå i stykker;
misligholde:
cout << "Invalid input." << endl;
retur 0;
I eksemplet ovenfor brukte vi sammenligningsfunksjonen for å sammenligne strengene "frukt" og "eple.”Hvis resultatet av sammenligningen er null, skrives meldingen“ det er en frukt ”. Det skriver ut "det er en grønnsak" hvis sammenligningsresultatet er negativt. Hvis ikke, viser det “Ugyldig inndata.”
Produksjon
Det er viktig å merke seg at strenger må være vedlagt i doble sitater (“”) når de brukes som saksetiketter. Enkelt sitater (“) vil resultere i en kompilasjonsfeil.
Programmering Switch Statement er et effektivt verktøy fordi det gjør det mulig å ta kompliserte beslutninger basert på en enkelt inngangsvariabel. Når du trenger å strukturere koden din rundt mange forskjellige mulige utfall, er den veldig nyttig.
De Switch Statement er Evne til å bruke strenger som case -etiketter er en annen fantastisk funksjon. Senere versjoner av C ++, inkludert C ++ 11, inkluderer denne muligheten.
Konklusjon
De Switch Statement I C ++ er en kontrollstrømuttalelse som muliggjør komplisert beslutningstaking basert på en enkelt inngangsvariabel. Det er et utmerket verktøy for å strukturere koden din og administrere mange potensielle utfall. De Switch Statement Får ekstra allsidighet ved å støtte bruken av strenger som etiketter, noe som gjør det til et mer nyttig verktøy for C ++ forfattere.