clasă std::string în C++

C++ are în definiția sa o modalitate de a reprezenta a succesiune de caractere ca obiect al clasei . Această clasă se numește std:: șir. Clasa șir stochează caracterele ca o secvență de octeți cu funcționalitatea de a permite acces la caracterul pe un singur octet .

Matrice șir vs caractere

Şir

Char Array

 Un șir este a clasa care defineste obiectele care să fie reprezentate ca un flux de personaje. O matrice de caractere este pur și simplu un matrice de caractere care poate fi terminat printr-un caracter nul.
În cazul șirurilor de caractere memoria este alocate dinamic . Mai multă memorie poate fi alocată în timpul rulării, la cerere. Deoarece nicio memorie nu este prealocată nicio memorie nu este irosită . Dimensiunea matricei de caractere trebuie să fie alocate static mai multă memorie nu poate fi alocată în timpul rulării dacă este necesar. Nefolosit alocat se irosește și memoria
Ca șirurile sunt reprezentate ca obiecte fără dezintegrare a matricei apare. Există o amenintarea cu dezintegrarea matricei în cazul matricei de caractere. 
Corzile sunt mai lente în comparație cu implementarea decât matricea de caractere. Implementarea matricea de caractere este mai rapidă decât std:: șir. 
Clasa String definește o serie de funcționalități care permit operații multiple pe șiruri. Matrice de caractere nu oferi multe funcții încorporate a manipula corzile.

Operații pe șiruri

1) Funcții de intrare

Funcţie Definiţie
getline() Această funcție este folosită pentru a stoca un flux de caractere introduse de utilizator în memoria obiectului.
push_back() Această funcție este folosită pentru a introduce un caracter la sfârșitul șirului.
pop_back() Introdusă din C++11 (pentru șiruri), această funcție este folosită pentru a șterge ultimul caracter din șir. 

Exemplu:

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  ;   }   

Ieșire
The initial string is : The string after push_back operation is : s The string after pop_back operation is :  

Complexitatea timpului: O(1)

Complexitatea spațiului: O(n) unde n este dimensiunea șirului

2) Funcții de capacitate

Funcţie Definiţie
capacitate() Această funcție returnează capacitatea alocată șirului care poate fi egală sau mai mare decât dimensiunea șirului. Spațiul suplimentar este alocat astfel încât atunci când noile caractere sunt adăugate la șir, operațiunile pot fi efectuate eficient.
redimensiona() Această funcție modifică dimensiunea șirului, dimensiunea poate fi mărită sau micșorată.
lungime() Această funcție găsește lungimea șirului.
shrink_to_fit() Această funcție scade capacitatea șirului și o face egală cu capacitatea minimă a șirului. Această operațiune este utilă pentru a economisi memorie suplimentară dacă suntem siguri că nu mai trebuie adăugate caractere.

Exemplu:

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  ;   }   

Ieșire
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 

Complexitatea timpului: O(1)

Complexitatea spațiului: O(n) unde n este dimensiunea șirului

3) Funcții de iterator

Funcţie Definiţie
ÎNCEPE() Această funcție returnează un iterator la începutul șirului.
Sfârşit() Această funcție returnează un iterator la următorul sfârșit al șirului.
rbegin() Această funcție returnează un iterator invers care indică la sfârșitul șirului.
face() Această funcție returnează un iterator invers care indică la începutul și precedentul șirului.
cbegin() Această funcție returnează un iterator constant care indică la începutul șirului, nu poate fi folosit pentru a modifica conținutul către care indică.
câteva () Această funcție returnează un iterator constant care indică la următorul sfârșit al șirului, nu poate fi folosit pentru a modifica conținutul către care indică.
crbegin() Această funcție returnează un iterator invers constant care indică la sfârșitul șirului, nu poate fi folosit pentru a modifica conținutul către care indică.
crend() Această funcție returnează un iterator invers constant care indică la începutul anterioară a șirului, nu poate fi folosită pentru a modifica conținutul către care indică.

Algoritm:

  1. Declarați un șir
  2. Încercați să repetați șirul folosind toate tipurile de iteratoare
  3. Încercați să modificați elementul șirului.
  4. Afișează toate iterațiile.

Exemplu:

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)   

Ieșire
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 

Complexitatea timpului: O(1)

Complexitatea spațiului: O(n) unde n este dimensiunea șirului

4) Funcții de manipulare:

Funcţie Definiţie
copy('char array' len pos)  Această funcție copiază subșirul din matricea de caractere țintă menționată în argumentele sale. Este nevoie de 3 argumente țintă lungimea matricei de caractere pentru a fi copiată și poziția de pornire din șir pentru a începe copierea.
swap() Această funcție schimbă un șir cu altul

Exemplu:

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  ;   }   

Ieșire
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 


Trebuie citit: Clasa String C++ și aplicațiile sale