Case ufølsom streng Sammenlign i C ++

Case ufølsom streng Sammenlign i C ++
Sammenligning har vært et veldig kjent og mest brukt konsept på mange felt. Når det gjelder programmeringsspråk, pleide vi å sammenligne tall mesteparten av tiden. Men det er ikke tilfelle på alle programmeringsspråk. Noen av programmeringsspråkene som C ++ gir oss muligheten til å sammenligne strengtypeverdier også. Dette kan gjøres ved å ignorere saksfølsomheten til disse strengene ved å bruke noen innebygde metoder. I vår dagens artikkel vil vi således diskutere disse metodene for å gjøre en strengesak ufølsom sammenligning i C++. Så la oss komme i gang med å åpne Ubuntu 20.04 Terminalkonsoll via “Ctrl+Alt+T”.

Eksempel 01: Bruke STRCASECMP -metode

Her har vi startet vårt første eksempel ved å lage en fil som må inneholde C ++ -utvidelsen. Berøringsforespørselen er blitt brukt til dette spesifikke formålet. Etter det må en bruker åpne den nyopprettede filen for å legge til litt kode til den. En bruker kan bruke enhver innebygd redaktør av Ubuntu 20.04 som vim, tekst eller nano redaktør. Så vi har brukt Nano -redaktøren her i henhold til vår lette og raske redigering. Så, "Nano" nøkkelordet brukes her for å åpne “saken.CC ”-filen i Nano Editor. Filen din blir åpnet i den tomme redigereren.

Vi har startet C ++ -koden med noen unike og nødvendige overskriftsfiler. Disse overskriftsfilene blir inkludert ved hjelp av nøkkelordet "inkluderer" med hasjskiltet. Hodefilene inkluderer "input-output" -strømoverskriften, "String" -overskriften og "cString" -overskriften for å bruke StrCaseCMP () -metoden i koden. Standard navneområdet er viktig for å bruke cout- og cin -klausulene i koden videre. Main () -metoden har pågått med initialiseringen av to strengtypevariabler S1 og S1, med noen strengverdier i den. Du kan se at begge strengene har nesten de samme verdiene med en liten saken ufølsomhet. "IF" -uttalelsen brukes her for å sammenligne to strengvariabler S1 og S2.

"StrCaseCmp ()" -funksjonen har blitt brukt i "if" -uttalelsen og tar både strengvariabler S1 og S2 for å bli sammenlignet. Denne funksjonen vil ignorere saken deres og sjekke om begge strengene er matchet eller ikke bruker en enkelt byte på en gang via “C_str ()” -metoden. Hvis byten til S1 stemmer overens med samme sted byte av streng S2, vil den returnere 0. I det siste, hvis alle resultatene som returneres tilsvarer 0, viser den at strengen S1 ligner på S2, og ignorerer saken deres. Derfor vil "hvis" -uttalelsen kjøre den første "cout" -uttalelsen som viser at begge strengene er matchet. Ellers vil den andre delen av "hvis" -uttalelsen utføre og vise at strengene ikke blir matchet. Returbestemmelsen vil ganske enkelt avslutte Main () -metoden her. Programmet vårt er fullført her. La oss bare raskt lagre den med snarveien “Ctrl+S” og slutte med “Ctrl+X”. Dette er et nødvendig skritt før du går til kompilerings- og utførelsesfasen.

Nå som filen er lagret og vi er tilbake til terminalen, er det på tide å samle den raskt. For samlingen av en hvilken som helst C ++ -fil i Ubuntu 20.04, du trenger en "G ++" -kompilator. Hvis du ikke har en, kan du prøve å installere den med "apt" -pakken. Ellers vil ikke koden din føre til slik den skal. Så vi samlet “saken.CC ”-filen med“ G ++ ”-kompilatoren, som var vellykket. Etter det var det siste trinnet utførelsen av denne kompilerte filen. Dette er gjort ved hjelp av en "./en.ut ”instruksjon. Vi har fått "strengene matchet ..." -meldingen, da både strengene S1 og S2 er like i sammenligning, men forskjellige i deres tilfelle.

Eksempel 02: Bruke StrnCaseCMP -metode

La oss ta et annet lignende eksempel på å sammenligne to tilfelle ufølsomme strenger i C++. Denne gangen vil vi bruke metoden “strncasecmp ()” i stedet for “strcasecmp ()” lignende funksjon. Begge fungerer ganske likt, men "strncasecmp ()" -metoden fungerer litt annerledes. Denne funksjonen tar 3 argumenter mens metoden “StrcaseCMP ()” tar 2 som vi gjorde i det første eksemplet. Koden ligner på den første eksempelkoden med en mindre endring på to posisjoner. Den første endringen er gjort i verdien av andrestreng S2, der vi nettopp har endret posisjonen til et strenginnhold i henhold til vårt ønske. Den andre endringen er gjort i "if" -uttalelsen der vi har lagt til den tredje parameteren i funksjonen "strncaseCmp ()" -metoden. Denne parameteren tar en heltallverdi for å spesifisere antall tegn fra begge strengene som skal matches eller sammenlignes, i.e., Første 5. Dette betyr at bare de første 5 tegnene fra begge strengene vil bli sammenlignet, og resultatet vil bli generert i henhold til det.

Hvis sammenligningen ble vellykket og begge strengene fikk de samme karakterene som ignorerer sakenes følsomhet, vil den returnere 0, og den første cout -uttalelsen blir utført. Ellers blir neste cout -klausul utført. La oss bare lagre med snarveien “Ctrl+S” og avslutte filen med “Ctrl+X” for å gå tilbake til terminalen. Nå er det vår tur til samlingen.

Etter samlingen viser utførelseskommandoen at strengene ikke blir matchet fordi de første 5 tegnene i begge strengene er forskjellige.

Eksempel 03: Bruke sammenligning () -metode

La oss ha vår siste, men ikke minst mulig metode for å sammenligne to tilfelle ufølsomme strenger i C++. Koden er startet med overskriftsfilene, i.e., iostream og algoritme. IOSTREAM brukes til input-output-strømmen, men "algoritmen" -overskriften brukes til å bruke COMPARE () og Transform () -metoden i koden riktig. Etter overskriftene brukes standard "navneområde" som nødvendig for bruk av "cout" og "cin" -klausuler for å vise og få inngangen. Deretter har vi startet vår viktigste () -funksjon av heltalls returtypen. Det initialiserer to variabler av strengtype S1 og S2. Begge strengene inneholder noen strengverdier med forskjellig saksfølsomhet, men er like i tegnene.

"Transform ()" -metoden er blitt brukt på både strenger, S1 og S2, for å konvertere dem til over -saken ved å bruke funksjonen “Toupper ()” fra start til slutt. Etter konvertering har metoden “sammenlign ()” blitt brukt i "hvis" -uttalelsen for å sjekke om strengen S1 er lik S2. Hvis sammenligningen av hver karakterbyte på samme sted for begge strengene returnerer 0, betyr det at begge er like. Så den vil utføre den første "cout" -uttalelsen som sier at strengene er matchet. Ellers vil den andre delen av "cout" bli utført, noe som viser at strengene ikke er de samme. Koden er fullført her.

Etter samlingen og kjøringen av kodefilen, har vi fått "Strings Matched ..." -meldingen. Begge strengene ble de samme etter å ha blitt konvertert til store bokstaver.

Konklusjon:

Denne artikkelen er på sitt beste for å forklare saken ufølsom streng sammenligne på C ++ -språket. Vi har brukt de tre forskjellige funksjonene i eksemplene våre for å oppnå denne funksjonaliteten i.e.strcaseCmp (), strncasecmp (), transform () og sammenligne (). Alle eksemplene implementeres på Ubuntu 20.04 System og er like kjørbare på andre Linux -distribusjoner. Vi håper du vil finne denne artikkelen ganske nyttig mens du lærer C++.