Alt hvad du behøver at vide om strenge i C ++



Denne artikel giver dig en detaljeret og omfattende viden om strenge i C ++ og vil også give eksempler på forskellige operationer.

Begrebet betyder en ordnet rækkefølge af tegn. En række af tegn kan repræsenteres ved hjælp af et objekt fra en klasse i C ++. Klassen, der giver en definition til at gøre det, kaldes en strengklasse. Strengklasse gemmer tegnene som en række af bytes med funktionaliteten til at give adgang til single-byte-tegnet. I C ++ er de vedlagte afgrænsere dobbelt anførselstegn. I denne artikel 'Strings in C ++' vil jeg diskutere følgende emner:

String Class og Character Array forskel

Strengklasse Tegn Array
Strengklasse er en klasse, der definerer objekter, der kan repræsenteres som en strøm af tegnTegnarray er simpelthen en række tegn.
I tilfælde af strenge tildeles hukommelse dynamisk, således at mere hukommelse kan tildeles på kørselstid efter behovStørrelsen på tegnarrayet skal tildeles statisk, og der kan derfor ikke tildeles mere hukommelse ved kørselstid, hvis det kræves
Strengklasse definerer et antal funktioner, der tillader mangfoldige operationer på strenge.Tegnarray tilbyder ikke mange indbyggede funktioner til at manipulere strenge
Strenge er langsommere sammenlignet med implementering end tegnarrayet.Implementering af et tegnarray er hurtigere.

Erklær og initialiser en streng i C ++

strings-in-c++Initialisering af streng i C ++ er ret enkel !. Vi kan bruge en af ​​følgende metoder.





ved hjælp af navneområde std streng std_string

eller

std :: streng std_string
#include ved hjælp af namespace 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 }

Produktion:



Hej ved ch Hej ved st Hej ved std_st

I dette eksempel har vi vist både tegnarray (ch) og streng class (st og std_st) initialiseringsmetoder. Først brugte vi tegnarraymetoden ved at definere et tegnarray ch [12], der indeholder 12 elementer og afsluttes med et nulltegn. I anden del brugte vi en strengklassemetode.

Operationer på strenge i C ++

Fordelen ved at bruge strengklasse er, at der er flere indbyggede funktioner i C ++ til at manipulere dem. Dette gør programmering let og effektiv. Lad os tage visse vigtige strengmanipulationsfunktioner op og forstå dem ved at se på nogle eksempler.

fordelene ved metodeoverbelastning i java

Streng størrelse: Både størrelse () og længde () metoder kan bruges til at returnere objektets størrelse.



koste<< st.length() <

Produktion:

11 11

Strengsammenkædning: Vi kan sammenkæde to eller flere strenge ved blot at bruge + operator mellem dem

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

Produktion:

Hej ved st og Hej ved std_st

Vedhæftede strenge: Klassemedlemfunktionen .append (streng) kan bruges til at sammenkæde og tilføje en streng på en bestemt karakterplacering i strengen. Hvis en programmerer lægger str.append (str1, p, n), betyder det, at n antal tegn fra position p i streng str1 tilføjes til slutningen af ​​str.

java få dato fra streng
string str = 'Jeg nyder at lære' string str1 = 'Python, C ++ eller C' str. append (str1, 8, 3) cout<< str << endl

Produktion:

Jeg nyder at lære C ++

Søger strenge: Vi kan bruge find () medlemsfunktionen til at finde den første forekomst af en streng inde i en anden. find () vil se efter strengnål inde i streng høstak, der starter fra position pos og returnerer positionen for den første forekomst af nålen. Funktionen rfind () fungerer ens, bortset fra at den returnerer den sidste forekomst af den beståede streng.

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

Produktion:

4 4 7 4294967295

Den første cout-kommando udskriver simpelthen '4', som er indekset for den første forekomst af 'o' i høstakstrengen. Hvis vi vil have 'o' i 'Verden', er vi nødt til at ændre 'pos' for at pege forbi den første begivenhed. haystack.find (nål, 4) ville igen returnere 4, mens haystack.find (nål, 5) ville give 7. Hvis understrengen ikke findes, find () returnerer std :: streng :: npos.

Npos er en speciel værdi svarende til den maksimale værdi, der kan repræsenteres af typen størrelse_type. Her er det 4294967295. Generelt bruges det enten som slutningen af ​​strengindikator af de funktioner, der forventer et strengindeks, eller som fejlindikator af de funktioner, der returnerer et strengindeks.

Denne enkle kode søger i en streng for alle forekomster af 'C ++' i str2 og udskriver deres positioner:

find det største tal i en array-java
string str2 = 'C ++ er et objektorienteret programmeringssprog og inkluderer klasser, arv, polymorfisme, dataabstraktion og indkapsling. C ++ tillader undtagelseshåndtering og funktionsoverbelastning, som ikke er mulig i C.C ++ er et kraftfuldt, effektivt og hurtigt sprog. '' 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 }

Produktion:

Fundet forekomst af 'C ​​++' i position 0 Fundet forekomst af 'C ​​++' i position 132 Fundet forekomst af 'C ​​++' i position 217
#include ved hjælp af namespace std klasse 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 dette funktionsopkald er // ulovligt (producerer fejl), fordi markøren // er af basistype og funktion er af // afledt klasse // p-> fun_4 (5)}

Produktion:

basisklassefunktion 1 afledt klassefunktion 2 basisklassefunktion 3 basisklassefunktion 4

Med dette kommer vi til en ende på denne artikel om strenge i C ++. Jeg håber, du har forståelse for de forskellige operationer, der kan udføres på den. Hvis du ønsker at lære mere, skal du tjekke Java Training af Edureka, et betroet online læringsfirma. Edureka's uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.