C++ har i sin definisjon en måte å representere en sekvens av tegn som et objekt i klassen . Denne klassen kalles std:: string. Strengeklassen lagrer tegnene som en sekvens av byte med funksjonaliteten til å tillate tilgang til enkeltbyte-tegnet .
String vs Character Array
String bash sette sammen strenger | Char Array |
---|---|
En streng er en klasse som definerer objekter som er representert som en strøm av karakterer. | En karakterarray er ganske enkelt en rekke karakterer som kan avsluttes med et nulltegn. |
Når det gjelder strenger, er minne tildeles dynamisk . Mer minne kan tildeles ved kjøretid på forespørsel. Siden ingen hukommelse er forhåndstildelt, ingen hukommelse er bortkastet . | Størrelsen på tegnarrayen må være fordelt statisk , mer minne kan ikke tildeles under kjøring om nødvendig. Ubrukt tildelt minnet er også bortkastet |
Ettersom strenger er representert som objekter, ingen array-forfall inntreffer. | Det er en trussel om array forfall når det gjelder tegnarrayen. |
Strenger er tregere sammenlignet med implementering enn tegnarray. | Implementering av tegnarray er raskere enn std:: streng. |
String klasse definerer en rekke funksjoner som tillater mangfoldige operasjoner på strenger. | Karakterarrayer ikke tilby mange innebygde funksjoner å manipulere strenger. |
Operasjoner på strenger
1) Inngangsfunksjoner
Funksjon | Definisjon |
---|---|
getline() | Denne funksjonen brukes til å lagre en strøm av tegn som angitt av brukeren i objektminnet. |
push_back() | Denne funksjonen brukes til å legge inn et tegn på slutten av strengen. |
pop_back() | Introdusert fra C++11 (for strenger), denne funksjonen brukes til å slette det siste tegnet fra strengen. |
Eksempel:
CPP
// C++ Program to demonstrate the working of> // getline(), push_back() and pop_back()> #include> #include // for string class> using> namespace> std;> > // Driver Code> int> main()> {> > // Declaring string> > string str;> > > // Taking string input using getline()> > getline(cin, str);> > > // Displaying string> > cout <<> 'The initial string is : '> ;> > cout << str << endl;> > > // Inserting a character> > str.push_back(> 's'> );> > > // Displaying string> > cout <<> 'The string after push_back operation is : '> ;> > cout << str << endl;> > > // Deleting a character> > str.pop_back();> > > // Displaying string> > cout <<> 'The string after pop_back operation is : '> ;> > cout << str << endl;> > > return> 0;> }> |
>
>Produksjon
The initial string is : The string after push_back operation is : s The string after pop_back operation is :>
Tidskompleksitet: O(1)
Romkompleksitet: O(n) hvor n er størrelsen på strengen
2) Kapasitetsfunksjoner
Funksjon | Definisjon |
---|---|
kapasitet() | Denne funksjonen returnerer kapasiteten som er allokert til strengen, som kan være lik eller større enn størrelsen på strengen. Ekstra plass er allokert slik at når de nye tegnene legges til strengen, kan operasjonene utføres effektivt. |
endre størrelse() | Denne funksjonen endrer størrelsen på strengen, størrelsen kan økes eller reduseres. |
lengde() | Denne funksjonen finner lengden på strengen. |
krymp for å passe() | Denne funksjonen reduserer kapasiteten til strengen og gjør den lik minimumskapasiteten til strengen. Denne operasjonen er nyttig for å spare ekstra minne hvis vi er sikre på at det ikke er nødvendig å legge til flere tegn. |
Eksempel:
CPP
// C++ Program to demonstrate the working of> // capacity(), resize() and shrink_to_fit()> #include> #include // for string class> using> namespace> std;> > // Driver Code> int> main()> {> > // Initializing string> > string str => 'geeksforgeeks is for geeks'> ;> > > // Displaying string> > cout <<> 'The initial string is : '> ;> > cout << str << endl;> > > // Resizing string using resize()> > str.resize(13);> > > // Displaying string> > cout <<> 'The string after resize operation is : '> ;> > cout << str << endl;> > > // Displaying capacity of string> > cout <<> 'The capacity of string is : '> ;> > cout << str.capacity() << endl;> > > // Displaying length of the string> > cout <<> 'The length of the string is :'> << str.length()> > << endl;> > > // Decreasing the capacity of string> > // using shrink_to_fit()> > str.shrink_to_fit();> > > // Displaying string> > cout <<> 'The new capacity after shrinking is : '> ;> > cout << str.capacity() << endl;> > > return> 0;> }> |
slå sammen java-strengen
>
>Produksjon
The initial string is : geeksforgeeks is for geeks The string after resize operation is : geeksforgeeks The capacity of string is : 26 The length of the string is :13 The new capacity after shrinking is : 13>
Tidskompleksitet: O(1)
Romkompleksitet: O(n) hvor n er størrelsen på strengen
3) Iteratorfunksjoner
Funksjon | Definisjon |
---|---|
begynne() | Denne funksjonen returnerer en iterator til begynnelsen av strengen. |
slutt() | Denne funksjonen returnerer en iterator til neste til slutten av strengen. |
rbegin() | Denne funksjonen returnerer en omvendt iterator som peker på slutten av strengen. |
gjengi() | Denne funksjonen returnerer en omvendt iterator som peker til forrige eller begynnelsen av strengen. |
cbegin() | Denne funksjonen returnerer en konstant iterator som peker til begynnelsen av strengen, den kan ikke brukes til å endre innholdet den peker på. |
Noen() | Denne funksjonen returnerer en konstant iterator som peker til neste eller slutten av strengen, den kan ikke brukes til å endre innholdet den peker på. |
crbegin() | Denne funksjonen returnerer en konstant omvendt iterator som peker mot slutten av strengen, den kan ikke brukes til å endre innholdet den peker på. |
crend() | Denne funksjonen returnerer en konstant omvendt iterator som peker til forrige eller begynnelsen av strengen, den kan ikke brukes til å endre innholdet den peker på. |
Algoritme:
- Erklær en streng
- Prøv å iterere strengen ved å bruke alle typer iteratorer
- Prøv å modifisere elementet i strengen.
- Vis alle iterasjonene.
Eksempel:
CPP
cm til fot og tommer
// C++ Program to demonstrate the working of> // begin(), end(), rbegin(), rend(), cbegin(), cend(), crbegin(), crend()> #include> #include // for string class> using> namespace> std;> > // Driver Code> int> main()> {> > // Initializing string`> > string str => 'geeksforgeeks'> ;> > > // Declaring iterator> > std::string::iterator it;> > > // Declaring reverse iterator> > std::string::reverse_iterator it1;> > cout<<> 'Str:'> <'
'; // Displaying string cout << 'The string using forward iterators is : '; for (it = str.begin(); it != str.end(); it++){ if(it == str.begin()) *it='G'; cout << *it; } cout << endl; str = 'geeksforgeeks'; // Displaying reverse string cout << 'The reverse string using reverse iterators is ' ': '; for (it1 = str.rbegin(); it1 != str.rend(); it1++){ if(it1 == str.rbegin()) *it1='S'; cout << *it1; } cout << endl; str = 'geeksforgeeks'; //Displaying String cout<<'The string using constant forward iterator is :'; for(auto it2 = str.cbegin(); it2!=str.cend(); it2++){ //if(it2 == str.cbegin()) *it2='G'; //here modification is NOT Possible //error: assignment of read-only location //As it is a pointer to the const content, but we can inc/dec-rement the iterator cout<<*it2; } cout<<'
'; str = 'geeksforgeeks'; //Displaying String in reverse cout<<'The reverse string using constant reverse iterator is :'; for(auto it3 = str.crbegin(); it3!=str.crend(); it3++){ //if(it2 == str.cbegin()) *it2='S'; //here modification is NOT Possible //error: assignment of read-only location //As it is a pointer to the const content, but we can inc/dec-rement the iterator cout<<*it3; } cout<<'
'; return 0; } //Code modified by Balakrishnan R (rbkraj000)> |
>
java arraylist sortering
>Produksjon
Str:geeksforgeeks The string using forward iterators is : Geeksforgeeks The reverse string using reverse iterators is : Skeegrofskeeg The string using constant forward iterator is :geeksforgeeks The reverse string using constant reverse iterator is :skeegrofskeeg>
Tidskompleksitet: O(1)
Romkompleksitet: O(n) hvor n er størrelsen på strengen
4) Manipulere funksjoner:
Funksjon | Definisjon |
---|---|
kopi (char array, len, pos) | Denne funksjonen kopierer delstrengen i måltegnarrayen nevnt i argumentene. Det krever 3 argumenter, mål-char-array, lengde som skal kopieres og startposisjon i strengen for å begynne å kopiere. |
bytte() | Denne funksjonen bytter en streng med en annen |
Eksempel:
CPP
// C++ Program to demonstrate the working of> // copy() and swap()> #include> #include // for string class> using> namespace> std;> > // Driver Code> int> main()> {> > // Initializing 1st string> > string str1 => 'geeksforgeeks is for geeks'> ;> > > // Declaring 2nd string> > string str2 => 'geeksforgeeks rocks'> ;> > > // Declaring character array> > char> ch[80];> > > // using copy() to copy elements into char array> > // copies 'geeksforgeeks'> > str1.copy(ch, 13, 0);> > > // Displaying char array> > cout <<> 'The new copied character array is : '> ;> > cout << ch << endl;> > > // Displaying strings before swapping> > cout <<> 'The 1st string before swapping is : '> ;> > cout << str1 << endl;> > cout <<> 'The 2nd string before swapping is : '> ;> > cout << str2 << endl;> > > // using swap() to swap string content> > str1.swap(str2);> > > // Displaying strings after swapping> > cout <<> 'The 1st string after swapping is : '> ;> > cout << str1 << endl;> > cout <<> 'The 2nd string after swapping is : '> ;> > cout << str2 << endl;> > > return> 0;> }> |
>
>Produksjon
java innsetting sortering
The new copied character array is : geeksforgeeks The 1st string before swapping is : geeksforgeeks is for geeks The 2nd string before swapping is : geeksforgeeks rocks The 1st string after swapping is : geeksforgeeks rocks The 2nd string after swapping is : geeksforgeeks is for geeks>
Må lese: C++ String Class og dens applikasjoner