Alt du trenger å vite om strenger i C ++



Denne artikkelen vil gi deg en detaljert og omfattende kunnskap om strenger i C ++, og vil også gi eksempler på forskjellige operasjoner.

Begrepet betyr en ordnet sekvens av tegn. En sekvens av tegn kan vises med et objekt fra en klasse i C ++. Klassen som gir en definisjon for å gjøre det, kalles en strengklasse. Strengklasse lagrer tegnene som en sekvens av byte med funksjonaliteten til å gi tilgang til enkeltbyte-tegnet. I C ++ er de vedlagte skillene to anførselstegn. I denne artikkelen 'Strenger in C ++' vil jeg diskutere følgende emner:

String Class og Character Array Difference

Strengklasse Character Array
Strengklasse er en klasse som definerer objekter som kan representeres som en strøm av tegnTegnfelt er rett og slett en rekke tegn.
Når det gjelder strenger, tildeles minne dynamisk, slik at mer minne kan tildeles på kjøretid etter behovStørrelsen på tegnmatrisen må tildeles statisk, og mer minne kan ikke tildeles på kjøretid om nødvendig
Strengklasse definerer en rekke funksjoner som tillater mangfoldige operasjoner på strenger.Tegnfelt tilbyr ikke mange innebygde funksjoner for å manipulere strenger
Strenger er tregere sammenlignet med implementering enn tegnmatrisen.Implementering av et tegnarray er raskere.

Deklarer og initialiser en streng i C ++

strings-in-c++Initialisering av streng i C ++ er ganske enkel !. Vi kan bruke en av følgende metoder.





ved hjelp av navneområdet std streng std_string

eller

std :: streng std_streng
# inkludere bruk av navneområdet std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hello by st' std :: string std_st = 'Hello by std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Produksjon:



Hello by ch Hello by st Hello by std_st

I dette eksemplet har vi vist både tegnsett (ch) og streng class (st og std_st) initialiseringsmetoder. Først brukte vi tegnsettingsmetoden ved å definere en tegnsett ch [12] som inneholder 12 elementer og avsluttes med et nulltegn. I den andre delen brukte vi en strengklassemetode.

Operasjoner på strenger i C ++

Fordelen med å bruke strengklasse er at det er flere innebygde funksjoner i C ++ for å manipulere dem. Dette gjør programmering enkel og effektiv. La oss ta opp visse viktige strengmanipuleringsfunksjoner og forstå dem ved å se på noen eksempler.

Streng størrelse: Både størrelse () og lengde () -metoder kan brukes til å returnere størrelsen på objektet.



koste<< st.length() <

Produksjon:

11 11

String sammenføyning: Vi kan sammenkoble to eller flere strenger ved å bruke + operator mellom dem

streng new_string = st + 'og' + std_st cout<< new_string <

Produksjon:

power bi vs tableau 2016
Hello by st og Hello by std_st

Tilleggsstrenger: .Append (streng) klassemedlemfunksjonen kan brukes til å sammenføye og legge til en streng på et bestemt tegnsted i strengen. Hvis en programmerer legger str.append (str1, p, n), betyr det at n antall tegn fra posisjon p i streng str1 blir lagt til slutten av str.

string str = 'Jeg liker å lære' string str1 = 'Python, C ++ eller C' str. append (str1, 8, 3) cout<< str << endl

Produksjon:

Jeg liker å lære C ++

Søker i strenger: Vi kan bruke finn () medlemsfunksjonen til å finne den første forekomsten av en streng i en annen. finn () vil se etter strengnål inne i streng høystakke fra posisjon pos og returnere posisjonen til nålens første forekomst. Funksjonen rfind () fungerer på samme måte, bortsett fra at den returnerer den siste forekomsten av den sendte strengen.

string haystack = 'Hello World!' strengnål = 'o' cout<< haystack.find(needle)<

Produksjon:

4 4 7 4294967295

Den første cout-kommandoen vil ganske enkelt skrive ut '4' som er indeksen for den første forekomsten av 'o' i høstakken. Hvis vi vil ha 'o' i 'Verden', må vi endre 'pos' for å peke forbi den første forekomsten. haystack.find (nål, 4) vil igjen returnere 4, mens haystack.find (nål, 5) vil gi 7. Hvis understrengen ikke blir funnet, finner () returnerer std :: streng :: npos.

Npos er en spesiell verdi lik maksimumsverdien som representeres av typen size_type. Her er det 4294967295. Vanligvis brukes den enten som slutten på strengindikatoren av funksjonene som forventer en strengindeks, eller som feilindikator av funksjonene som returnerer en strengindeks.

Denne enkle koden søker i en streng for alle forekomster av 'C ++' i str2 og skriver ut deres posisjoner:

string str2 = 'C ++ er et objektorientert programmeringsspråk og inkluderer klasser, arv, polymorfisme, dataabstraksjon og innkapsling. C ++ tillater unntakshåndtering, og funksjonsoverbelastning som ikke er mulig i C.C ++ er et kraftig, effektivt og raskt språk. ' for (streng :: størrelse_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = streng :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Produksjon:

Fant forekomst av 'C ++' i posisjon 0 Fant forekomst av 'C ++' i posisjon 132 Fant forekomst av 'C ++' i posisjon 217
#include ved å bruke namespace std class base {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // Sen binding (RTP) ptr-> fun_3 () // Sen binding (RTP) ptr-> fun_4 () // Tidlig binding, men denne funksjonsanropet er // ulovlig (gir feil) fordi pekeren // er av basetype og funksjon er av // avledet klasse // p-> fun_4 (5)}

Produksjon:

baseklassefunksjon 1 avledet klassefunksjon 2 baseklassefunksjon 3 baseklassefunksjon 4

Med dette kommer vi til en slutt på denne artikkelen om Strings in C ++. Jeg håper du fikk forståelse for de forskjellige operasjonene som kan utføres på den. Hvis du ønsker å lære mer, kan du sjekke Java Training av Edureka, et pålitelig online læringsfirma. Edureka’s kurs og sertifiseringskurs er designet for å trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet på denne bloggen, så kommer vi tilbake til deg så snart som mulig.