std::string-Klasse in C++

C++ hat in seiner Definition eine Möglichkeit, a darzustellen Zeichenfolge als Objekt der Klasse . Diese Klasse heißt std::string. Die String-Klasse speichert die Zeichen als Folge von Bytes mit der Funktionalität des Zulassens Zugriff auf das Einzelbyte-Zeichen .

String vs. Zeichenarray

Zeichenfolge

Char-Array

 Eine Zeichenfolge ist eine Klasse, die Objekte definiert die als Zeichenstrom dargestellt werden. Ein Zeichenarray ist einfach ein Reihe von Zeichen das mit einem Nullzeichen abgeschlossen werden kann.
Bei Strings handelt es sich um Speicher dynamisch zugewiesen . Bei Bedarf kann zur Laufzeit mehr Speicher zugewiesen werden. Da kein Speicher vorbelegt ist Es wird kein Speicher verschwendet . Die Größe des Zeichenarrays muss sein statisch zugewiesen Bei Bedarf kann zur Laufzeit nicht mehr Speicher zugewiesen werden. Unbenutzt zugewiesen Speicher wird ebenfalls verschwendet
Da Strings als Objekte dargestellt werden kein Array-Zerfall auftritt. Es gibt eine Drohung von Array-Zerfall im Fall des Zeichenarrays. 
Saiten sind langsamer im Vergleich zur Implementierung als Zeichenarray. Umsetzung von Zeichen-Array ist schneller als std:: string. 
String-Klasse definiert eine Reihe von Funktionalitäten die vielfältige Operationen an Strings ermöglichen. Zeichenarrays nicht anbieten viele eingebaute Funktionen um Strings zu manipulieren.

Operationen an Strings

1) Eingabefunktionen

Funktion Definition
getline() Diese Funktion wird verwendet, um einen vom Benutzer eingegebenen Zeichenstrom im Objektspeicher zu speichern.
push_back() Mit dieser Funktion wird ein Zeichen am Ende der Zeichenfolge eingegeben.
pop_back() Diese Funktion wurde ab C++11 (für Zeichenfolgen) eingeführt und wird verwendet, um das letzte Zeichen aus der Zeichenfolge zu löschen. 

Beispiel:

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

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

Zeitkomplexität: O(1)

Raumkomplexität: O(n) wobei n die Größe der Zeichenfolge ist

2) Kapazitätsfunktionen

Funktion Definition
Kapazität() Diese Funktion gibt die der Zeichenfolge zugewiesene Kapazität zurück, die gleich oder größer als die Größe der Zeichenfolge sein kann. Es wird zusätzlicher Speicherplatz zugewiesen, damit die Vorgänge effizient ausgeführt werden können, wenn der Zeichenfolge neue Zeichen hinzugefügt werden.
Größe ändern() Diese Funktion ändert die Größe der Zeichenfolge. Die Größe kann erhöht oder verringert werden.
Länge() Diese Funktion ermittelt die Länge der Zeichenfolge.
Shrink_to_fit() Diese Funktion verringert die Kapazität der Zeichenfolge und gleicht sie der minimalen Kapazität der Zeichenfolge an. Dieser Vorgang ist nützlich, um zusätzlichen Speicher zu sparen, wenn wir sicher sind, dass keine weiteren Zeichen hinzugefügt werden müssen.

Beispiel:

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

Ausgabe
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 

Zeitkomplexität: O(1)

Raumkomplexität: O(n) wobei n die Größe der Zeichenfolge ist

3) Iteratorfunktionen

Funktion Definition
beginnen() Diese Funktion gibt einen Iterator zum Anfang der Zeichenfolge zurück.
Ende() Diese Funktion gibt einen Iterator bis zum nächsten Ende der Zeichenfolge zurück.
rbegin() Diese Funktion gibt einen umgekehrten Iterator zurück, der auf das Ende der Zeichenfolge zeigt.
machen() Diese Funktion gibt einen umgekehrten Iterator zurück, der auf den vorherigen Anfang der Zeichenfolge zeigt.
cbegin() Diese Funktion gibt einen konstanten Iterator zurück, der auf den Anfang der Zeichenfolge zeigt. Sie kann nicht zum Ändern des Inhalts verwendet werden, auf den sie zeigt.
ein paar() Diese Funktion gibt einen konstanten Iterator zurück, der auf das nächste Ende der Zeichenfolge zeigt. Er kann nicht zum Ändern des Inhalts verwendet werden, auf den er zeigt.
crbegin() Diese Funktion gibt einen konstanten Reverse-Iterator zurück, der auf das Ende der Zeichenfolge zeigt. Sie kann nicht zum Ändern des Inhalts verwendet werden, auf den sie zeigt.
crend() Diese Funktion gibt einen konstanten umgekehrten Iterator zurück, der auf den vorherigen Anfang der Zeichenfolge zeigt. Sie kann nicht zum Ändern des Inhalts verwendet werden, auf den sie zeigt.

Algorithmus:

  1. Deklarieren Sie eine Zeichenfolge
  2. Versuchen Sie, die Zeichenfolge mit allen Iteratortypen zu iterieren
  3. Versuchen Sie, das Element der Zeichenfolge zu ändern.
  4. Alle Iterationen anzeigen.

Beispiel:

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)   

Ausgabe
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 

Zeitkomplexität: O(1)

Raumkomplexität: O(n) wobei n die Größe der Zeichenfolge ist

4) Manipulationsfunktionen:

Funktion Definition
copy('char array' len pos)  Diese Funktion kopiert die Teilzeichenfolge in das in ihren Argumenten genannte Zielzeichenarray. Es sind 3 Argumente erforderlich: Ziellänge des zu kopierenden char-Arrays und Startposition in der Zeichenfolge, um mit dem Kopieren zu beginnen.
tauschen() Diese Funktion tauscht eine Zeichenfolge mit einer anderen aus

Beispiel:

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

Ausgabe
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 


Muss lesen: C++-String-Klasse und ihre Anwendungen