std::string class i C++

C++ har i sin definition ett sätt att representera en sekvens av tecken som ett objekt i klassen . Denna klass kallas std:: string. Strängklassen lagrar tecknen som en sekvens av bytes med funktionen att tillåta tillgång till singelbyte-tecknet .

String vs Character Array

Sträng

Char Array

 En sträng är en klass som definierar objekt som representeras som en ström av karaktärer. En teckenuppsättning är helt enkelt en rad karaktärer som kan avslutas med ett nolltecken.
När det gäller strängar minne är tilldelas dynamiskt . Mer minne kan tilldelas vid körning på begäran. Eftersom inget minne är förallokerat inget minne går till spillo . Storleken på teckenuppsättningen måste vara tilldelas statiskt mer minne kan inte tilldelas vid körning om det behövs. Oanvänd tilldelad minnet är också bortkastat
Som strängar representeras som objekt inget arrayförfall inträffar. Det finns en hot om array förfall i fallet med teckenuppsättningen. 
Strängar är långsammare jämfört med implementering än teckenuppsättning. Genomförande av teckenuppsättningen är snabbare än std:: sträng. 
String klass definierar ett antal funktioner som tillåter mångfaldiga operationer på strängar. Karaktärsuppsättningar inte erbjuda många inbyggda funktioner att manipulera strängar.

Operationer på strängar

1) Ingångsfunktioner

Fungera Definition
getline() Denna funktion används för att lagra en ström av tecken som angetts av användaren i objektminnet.
push_back() Denna funktion används för att mata in ett tecken i slutet av strängen.
pop_back() Introducerad från C++11 (för strängar) används denna funktion för att ta bort det sista tecknet från strängen. 

Exempel:

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

Produktion
The initial string is : The string after push_back operation is : s The string after pop_back operation is :  

Tidskomplexitet: O(1)

Rymdkomplexitet: O(n) där n är storleken på strängen

2) Kapacitetsfunktioner

Fungera Definition
kapacitet() Denna funktion returnerar den kapacitet som tilldelats strängen som kan vara lika med eller större än strängens storlek. Ytterligare utrymme tilldelas så att operationerna kan utföras effektivt när de nya tecknen läggs till i strängen.
ändra storlek() Denna funktion ändrar storleken på strängen och storleken kan ökas eller minskas.
längd() Denna funktion hittar längden på strängen.
shrink_to_fit() Denna funktion minskar strängens kapacitet och gör den lika med strängens minimikapacitet. Denna operation är användbar för att spara ytterligare minne om vi är säkra på att ingen ytterligare tillägg av tecken behöver göras.

Exempel:

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

Produktion
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 

Tidskomplexitet: O(1)

Rymdkomplexitet: O(n) där n är storleken på strängen

3) Iteratorfunktioner

Fungera Definition
börja() Denna funktion returnerar en iterator till början av strängen.
avsluta() Denna funktion returnerar en iterator till nästa i slutet av strängen.
rbegin() Denna funktion returnerar en omvänd iterator som pekar mot slutet av strängen.
göra() Denna funktion returnerar en omvänd iterator som pekar på föregående eller början av strängen.
cbegin() Denna funktion returnerar en konstant iterator som pekar på början av strängen. Den kan inte användas för att ändra innehållet den pekar på.
några få() Den här funktionen returnerar en konstant iterator som pekar på nästa eller slutet av strängen som den inte kan användas för att ändra innehållet den pekar på.
crbegin() Denna funktion returnerar en konstant omvänd iterator som pekar mot slutet av strängen som den inte kan användas för att ändra innehållet den pekar på.
crend() Denna funktion returnerar en konstant omvänd iterator som pekar på föregående eller början av strängen. Den kan inte användas för att ändra innehållet den pekar på.

Algoritm:

  1. Deklarera en sträng
  2. Försök att iterera strängen med alla typer av iteratorer
  3. Försök att modifiera elementet i strängen.
  4. Visa alla iterationer.

Exempel:

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)   

Produktion
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 

Tidskomplexitet: O(1)

Rymdkomplexitet: O(n) där n är storleken på strängen

4) Manipulera funktioner:

Fungera Definition
copy('char array' len pos)  Denna funktion kopierar delsträngen i målteckenmatrisen som nämns i dess argument. Det krävs 3 argument för att char-arraylängden ska kopieras och startpositionen i strängen för att börja kopiera.
byta() Denna funktion byter en sträng med en annan

Exempel:

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

Produktion
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åste läsa: C++ String Class och dess applikationer