Fjern tegnsetting fra streng C ++

Fjern tegnsetting fra streng C ++
Når vi jobber med C ++ -prosjekter, må vi fjerne tegnsettingstegn for å gjøre koden vår lesbar og klar. Det kan hende du har tenkt å slette tegnsettingstegn eller symboler fra et strengnummer som er lagt inn av en bruker i programmet ditt for å konvertere det til et heltall, ettersom tegnsetting er kraftig. De har makten til å endre setningens mening fullstendig. Tatt i betraktning at C ++ har laget en detaljert guide for å fjerne tegnsettingssymboler fra en streng.

Det er noen få metoder for å fjerne tegnsettingssymboler fra en streng i C++. I denne artikkelen vil vi gå gjennom hvordan du fjerner tegnsettingsmerker fra en streng ved hjelp av forskjellige metoder i C++.

Eksempel 1: Program for C-stil metode for å fjerne tegnsetting i C++

Denne implementeringen eliminerer alle symboler unntatt alfabeter fra en streng ved å bruke C-stil strengmetoden som er lagt inn av brukeren.

Først har vi hovedmetoden i programmet. I hovedsak har vi en char -matrise som "strline" og setter grensen for char -arrayen til "50". Vi har også definert en annen char -matrise, "charstring" av grensen "50". Deretter en "int" variabel som "n" og initialiser den med null. COUT -kommandoen vil skrive ut setningen “Skriv inn en streng” for en bruker. Gjennom Cin.Getline -tilnærming, brukeren vil legge inn strengen. Strengen som er lagt inn av brukeren vil bli sjekket i for -sløyfetilstanden, som vil bekrefte om "strline" -tegnet ikke er på slutten av strengen.

Da vil, hvis uttalelsen skal utføre betingelsen for at strengen som er lagt inn, har små og store alfabet og sjekk om strengen bare har tegn eller ikke. Vi har initialisert "charstring" -arrayen med nulltegnene som programmet avsluttet som strengen har sin endeverdi på null tegn.

#inkludere
ved hjelp av navneområdet STD;
int main ()
char strline [50], charstring [50];
int n = 0;
cout<= 'a' &&StrLine[i]= 'A' &&StrLine[i]<='Z'))

Charstring [n ++] = strline [i];


Charstring [n] = '\ 0';
cout<< "Resultant String: " <retur 0;

Strengen som er lagt inn av brukeren har noen tegnsettingstegn, som fjernes i den resulterende strengen med C-stil-metoden.

Eksempel 2: Program for bruk av std :: remove_if -metoden for å fjerne tegnsetting i C++

Et enkelt alternativ for å fjerne tegnsetting fra en streng er å bruke standardalgoritmen “std :: remove_if” med strengen :: slette medlemsfunksjonen. Ettersom algoritmen "std :: remove_if" ikke har tilgang til strengbeholderen, kan den bare fjerne tegnsettingsmerkene i strengen. Den gir ut en iterator som indikerer hvor avslutningen skal være, som kan fjernes ved hjelp av STD :: Slettingsmetoden.

Hovedmetoden for dette programmet har en standard strengklasse -måte å erklære en streng som "myString" og initialisere den med strengen som inneholder noe tegnsettingskarakter. Deretter har vi en "Auto" -typevariabel som "Fjern", vi brukte metoden std :: remove_if. I metoden har vi en BEGIN () -funksjon for de første tegnene iteratoren av strengen og enden () for de siste karakterene iterator for strengen “MyString”. Vi har en matrise char const av referansevariabel “s”. Det oppretter en kopi av hvert tegn.

ISPUNCT () blir da kalt for å sjekke matrisen som inneholder elementer er karakter. Etter den slettingsmetoden brukes som fjerner tegnsettingen fra strengen opp til strengens siste tegn.

#inkludere
#inkludere
#inkludere
#inkludere
int main ()

std :: streng myString = "Han!@|| ll@o.++| ";
Auto remove = std :: remove_if (myString.Begynn (), MyString.slutt(), []
(Char Const & S)

return std :: iSpunct (er);
);
MyString.Slett (fjern, myString.slutt());
std :: cout<retur 0;

Strengen vist på bildet har ikke noe tegnsettingssymbol; Bare strengen med tegnene blir returnert.

Eksempel 3: Program for å bruke en omvendt sløyfe for å fjerne tegnsetting i C++

Alternativt kan vi bruke en konvensjonell for loop for å lokalisere punktering i den gitte strengen og slette dem med strengen :: Slettingsmetode. Løkken skal være i omvendt rekkefølge for å unngå ikke-deterministisk ytelse mens du fjerner komponenter under iterasjon.

Strengen er definert med navnet “String_str” som i en standardklasse av streng, og strengen inneholder strengen med noen alfabetetegn og noen tegnsettingssymboler. Etter strengdeklarasjonen har vi en for loop som vil iterere over hvert strengtegn i omvendt rekkefølge. Deretter har vi en iSPUNCT -funksjon som verifiserer tegnsettingstegn i den spesifiserte strengen i IF -tilstanden. Hvis det blir funnet noe tegnsettingstegn, vil det bli slettet i slettefunksjonen.

#inkludere
#inkludere
#inkludere
int main ()

std :: String String_str = "C '| Plus [pluspro@gr @@^a & mm!-ing ";
for (int i = string_str.størrelse () - 1; i> = 0; Jeg--)
if (iSpunct (String_str [i]))
String_str.slette (i, 1);


std :: cout<< "String :" <retur 0;

Den resulterende strengen har ingen tegnsettingskarakter, som vist i følgende bilde.

Eksempel 4: Program ved hjelp av en tilpasset funksjon for å fjerne tegnsetting i C++

Alternativt kan den forrige prosedyren flyttes til en egen funksjon, som genererer en lokal kopi av strengen og fungerer på den, og returnerer den formaterte verdien til den opprinnelige koden. Den tilpassede funksjonen brukes til å forbedre funksjonaliteten for å mulig.

Vi har funksjonsdefinisjonen som "RemovePunctuation" i det følgende programmet og passerte strengreferansen "Str" som en parameter. I funksjonen har vi “temp” som en funksjon som vi passerer “Stre. Deretter har vi en slettfunksjon som ringer std :: remove_if -funksjonen i den.

Etter det har vi hovedmetoden der vi har definert og initialisert et streng "innhold". Funksjonen påkalte også den ovennevnte funksjonen "RemovePunctuation" her som strengen "Innholdet" er bestått. Den analyserte strengen vil bli skrevet ut etter å ha fjernet tegnsettingssymbolene.

#inkludere
#inkludere
#inkludere
#inkludere
bruker std :: cout; bruker std :: cin;
bruker std :: endl; bruker std :: streng;
String removePunctuation (const String & str)
streng temp (str);
temp.Slett (std :: remove_if (temp.Begynn (), Temp.end (), iSpunct), temp.slutt());
Retur Temp;

int main ()
Strenginnhold = "har | ,! a @@^() g ^^ o!od d@++ ay |?";
cout<< "string content:" << content <String format_content = removePunctuation (innhold);
cout<< "Parsed string :" <retur 0;

Strengen med tegnsettingstegn og strengen uten tegnsettingstegn vises her på utgangsskjermen.

Konklusjon

For å oppsummere, har vi dekket flere måter i C ++ for å fjerne tegnsettingstegn fra en streng. Du kan bruke de ovennevnte fire metodene for å fjerne alle tegnsettingstegn fra en streng. Disse metodene gir deg en filter-out tegnsettingsstreng i C++. Ved å lese artikkelen kan du oppdage hvilke av disse tilnærmingene som er mer praktisk.