std::string klasse i C++

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

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 som kan avsluttes med et nulltegn.
I tilfelle av strenger minne er tildeles dynamisk . Mer minne kan tildeles ved kjøretid på forespørsel. Siden ingen minne 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
Som strenger er representert som objekter ingen array-forfall oppstår. Det er en trussel om array forfall
Strenger er tregere sammenlignet med implementering enn tegnarray. Gjennomføring 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) brukes denne funksjonen 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. Ytterligere plass er allokert slik at operasjonene kan utføres effektivt når de nye tegnene legges til strengen.
endre størrelse() Denne funksjonen endrer størrelsen på strengen, størrelsen kan økes eller reduseres.
lengde() Denne funksjonen finner lengden på strengen.
shrink_to_fit() 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  ;   }   

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 få () 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:

  1. Erklær en streng
  2. Prøv å iterere strengen med alle typer iteratorer
  3. Prøv å modifisere elementet i strengen.
  4. Vis alle iterasjonene.

Eksempel:

CPP
   // 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:'   < <  str   < <  '  n  '  ;      // 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   < <  '  n  '  ;          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   < <  '  n  '  ;      return     0  ;   }   //Code modified by Balakrishnan R (rbkraj000)   

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
copy('char array' len pos)  Denne funksjonen kopierer delstrengen i måltegnarrayen nevnt i argumentene. Det tar tre argumenter for å kopiere char array-lengden 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
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å leses: C++ String Class og dens applikasjoner