Fjern mellomrom fra streng C ++

Fjern mellomrom fra streng C ++
Våre data kan inneholde flere mellomrom fra tid til annen, noe som kan forårsake problemer under dataanalyse. Når behovet oppstår, er det nyttig å vite hvordan du fjerner flere mellomrom som faner, linjer og vognreturer. Her er flere forklaringer på hvorfor rom skal fjernes fra strenger:
  • Unødvendige rom ved start, slutt og til og med i sentrum
  • Prøver å finne ut hvor mange tegn det er i en streng
  • Forsøker å organisere et sett med strenger
  • Når to strenger sammenlignes
  • Legge til en URL til et nettsted

Hvis C ++ -kodekodene våre møter rom mens vi utfører noen av disse tidligere operasjonene, vil vi motta uventede utfall, for eksempel feil karaktertelling, feil sorterte lister, unøyaktige strengsammenligninger og ødelagte URL -er. Som standard regnes disse som hvitespace -tegn, jeg.e., “\ N”, “\ t”, “”, “\ V”, “\ r”, “f”.

Noen ganger er det viktig å fjerne plass fra strenger i programmering for å unngå uventede utfall. Lær hvordan du fjerner mellomrom fra strenger og hvordan du takler flere mellomrom med denne artikkelen.

Eksempel 1: Bruke :: Isspace -metoden for å fjerne hvitfarer fra strengen i C++

For å trekke ut hvitespace -tegn fra std :: strenger, er den vanlige tilnærmingen å bruke std :: fjerne hvis metoden. STD :: Fjern_IF-algoritmen eliminerer ikke effektivt tegn fra strengen, men flytter heller alle tegnene med ikke-hvite. Metoden std :: remove_if krever et predikat som bestemmer hvilke tegn som skal slette fra strengen.

ISSPACE () -metoden er den som er spesifisert i CCType -overskriften og søker etter Whitespace -tegn kategorisert av den installerte C -lokaliteten.

Følgende eksempel starter fra hovedfunksjonen. Standard strengklassens strengdeklarasjon er definert i hovedmetoden. Strengvariabelen er definert som "STR" og initialiseres med strengen som inneholder Whitespace -tegn. For å fjerne hvitespasninger fra strengen, brukte vi den normale sletteprosedyren.

Vi har brukt std :: remove_if -metoden. I STD :: Fjern_IF -metoden har vi passert ":: Isspace" -funksjonen i et søk etter et hvitt -space -tegn i en gitt streng. Strengen etter å ha fjernet hvitespasene vil bli skrevet ut på følgende skjermbilde:

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

std :: String str = "c \ n \ nplusplus";
str.Slett (std :: remove_if (str.Begynn (), Str.End (), :: Isspace), Str.slutt());
std :: cout<< "String:"<< str<<"\n";
retur 0;

Som du kan se, finnes ingen hvitrommete karakter i følgende vist streng:

Eksempel 2: Bruke STD :: Isspace -metoden for å fjerne hvitespaser fra strengen i C++

I dette eksemplet bruker vi standardbindingsmetoden for å fjerne hvitrommet fra strengen ved å ringe STD :: Isspace -funksjonen. I stedet for å avhengig av C -lokalitetens klassifisering av Whitespace -tegn, kan vi bruke STD :: Isspace representert i topplokalet, der CType -aspektet av det spesifiserte lokaliteten klassifiserer Whitespace -tegnene.

Binding av en funksjon med plassholdere lar deg endre posisjonen og mengden av verdier som funksjonen vil bruke, og endre funksjonen basert på ønsket utfall.

Strengen er definert som "str_n" i hoved-. Her har vi påkalt slettingsmetoden for strengen "str_n" der to funksjoner brukes std :: remove_if og std :: bind. Merk at vi har brukt Std :: Isspace i bindfunksjonen for å finne hvitespasninger i strengen; Deretter vil slette -metoden fjerne hvitrommet fra strengen og returnere en ny utfallsstreng.

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

std :: String str_n = "White \ n \ nspaces";
Str_n.Slett (std :: remove_if (str_n.begynne(),
Str_n.slutt(),
std :: bind (std :: Isspace,
std :: plassholdere :: _ 1,
STD :: Locale :: Classic ()
)),
Str_n.slutt());
std :: cout<< "String:"<retur 0;

Når du sammenstiller det forrige programmet, viser skallet de ikke-hvite space-tegnene.

Eksempel 3: Bruke Unary -metoden for å fjerne hvitespasninger fra strengen i C++

I stedet for å bruke :: Isspace eller Std :: Isspace, kan vi lage en tilpasset tilstand som returnerer sant hvis tegnet er en hvitrommet karakter eller ellers falsk. Vi har laget vår Unary -metode for å fjerne Whitespace -tegn fra strengen.

Vi har laget en unary -metode “MyFunction” av datatype bool. Funksjonen har gått med argumentet fra den usignerte røyevariabelen “Mychar”. Inne i funksjonen har vi en returbetingelse som returnerer det spesifiserte hvitrommet hvis du finnes i strengen.

Deretter har vi hovedfunksjonen der strengen genereres som "MyString" og inneholder strengtegnene med Whitespace -tegn. Slettingsmetoden brukes heretter i strengdeklarasjonen der Remove_if og funksjonen "MyFunction" kalles å slette Whitespace -tegnene.

#inkludere
#inkludere
#inkludere
bool myfunction (usignert char mychar)
return (mychar == "|| mychar == '\ n' || mychar == '\ r' ||
Mychar == '\ t' || Mychar == '\ V' || Mychar == '\ f');

int main ()

std :: String myString = "MC \ n \ ndonald";
MyString.Slett (std :: remove_if (myString.Begynn (), MyString.slutt (), myfunksjon), myString.slutt());
std :: cout<< "String:" <retur 0;

Den resulterende strengen har alle ikke-Whitespace-tegn vist på følgende skallskjerm:

Eksempel 5: Bruke regex -metoden for å fjerne hvitespasninger fra strengen i C++

Regex erstatning () -metoden erstatter et vanlig uttrykksmønster med en streng som inneholder Whitespace -tegn. La oss diskutere det med eksempler på demonstrasjonen.

C ++ -programmet inneholder en regex -fil i overskriftsdelen for å få tilgang til regex_replace -funksjonen i programmet. Int -hoved er definert, som har en integrert strengrepresentasjon med Whitespace -tegnene i en strengvariabel “Stringis”. Deretter har vi kalt regex -funksjonen i en strandet regex -representasjon og passert strengvariabelen “Stringis” med “+” -operatøren. Regex_replace -funksjonen kalles over den variable strengen “Stringis” for å slette hvitespasene eller hvitespace -tegnene fra den gitte strengen:

#inkludere
#inkludere
#inkludere
int main ()

std :: String Stringis = "1 \ n \ n2 \ n \ n3 \ n \ n4 \ n \ n5";
std :: regex regx ("\\ stringis+");
Stringis = std :: regex_replace (Stringis, regx, "");
std :: cout<retur 0;

Regex -erstatningen fjerner Whitespace -tegnene fra heltallstrengen, som er trykt i kommandoskallet til Ubuntu.

Konklusjon

Dermed kan vi fjerne Whitespace -tegn fra strengen i C ++ gjennom forskjellige metoder omtalt i denne artikkelen. Vi har alle demonstrasjonene av disse eksemplene med det resulterende resultatet av programmet. Du har et tilstrekkelig antall metoder for å erstatte eller fjerne hvite rom fra C ++ strenger. Velg metoder som tiltrekker deg, samtidig som du er passende for situasjonen.