std::merkkijonoluokka C++:ssa

C++:lla on määritelmässä tapa edustaa a merkkijono luokan kohteena . Tätä luokkaa kutsutaan nimellä std:: string. Merkkijonoluokka tallentaa merkit tavujonona sallimistoiminnolla pääsy yksitavuiseen merkkiin .

Merkkijono vs. merkkijono

merkkijono

Char Array

 Merkkijono on a luokka, joka määrittelee objektit jotka esitetään merkkijonona. Merkkitaulukko on yksinkertaisesti an joukko hahmoja jonka voi lopettaa tyhjällä merkillä.
Merkkijonojen tapauksessa muisti on jaetaan dynaamisesti . Lisää muistia voidaan varata ajon aikana tarpeen mukaan. Koska muistia ei ole esivarattu muistia ei mene hukkaan . Merkkijoukon koon on oltava jaettu staattisesti lisää muistia ei voida varata ajon aikana tarvittaessa. Käyttämätön allokoitu myös muisti menee hukkaan
Merkkijonot esitetään objekteina ei taulukon hajoamista tapahtuu. Siellä on a uhka joukon hajoaminen merkkijonon tapauksessa. 
Jouset ovat hitaampia verrattuna toteutukseen kuin merkkijonoon. Toteutus merkkijono on nopeampi kuin std:: merkkijono. 
Merkkijonoluokka määrittelee useita toimintoja jotka mahdollistavat monitoimitoiminnot merkkijonoilla. Merkkijoukot älä tarjoa monet sisäänrakennetut toiminnot kieliä manipuloida.

Toiminnot jousilla

1) Tulotoiminnot

Toiminto Määritelmä
getline() Tätä toimintoa käytetään tallentamaan käyttäjän syöttämä merkkijono objektimuistiin.
push_back() Tätä toimintoa käytetään syöttämään merkki merkkijonon loppuun.
pop_back() Esitetty C++11:stä (merkkijonoille) tätä toimintoa käytetään poistamaan viimeinen merkki merkkijonosta. 

Esimerkki:

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

Lähtö
The initial string is : The string after push_back operation is : s The string after pop_back operation is :  

Aika monimutkaisuus: O(1)

Tilan monimutkaisuus: O(n) missä n on merkkijonon koko

2) Kapasiteettitoiminnot

Toiminto Määritelmä
kapasiteetti () Tämä funktio palauttaa merkkijonolle varatun kapasiteetin, joka voi olla yhtä suuri tai suurempi kuin merkkijonon koko. Lisätilaa varataan niin, että kun uudet merkit lisätään merkkijonoon, toiminnot voidaan tehdä tehokkaasti.
muuta kokoa() Tämä toiminto muuttaa merkkijonon kokoa kokoa voidaan suurentaa tai pienentää.
pituus() Tämä funktio etsii merkkijonon pituuden.
shrink_to_fit() Tämä toiminto pienentää merkkijonon kapasiteettia ja tekee siitä yhtä suuren kuin merkkijonon vähimmäiskapasiteetti. Tämä toiminto on hyödyllinen lisämuistin säästämiseksi, jos olemme varmoja, ettei merkkejä tarvitse enää lisätä.

Esimerkki:

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

Lähtö
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 

Aika monimutkaisuus: O(1)

Tilan monimutkaisuus: O(n) missä n on merkkijonon koko

3) Iteraattoritoiminnot

Toiminto Määritelmä
alkaa() Tämä funktio palauttaa iteraattorin merkkijonon alkuun.
loppu () Tämä funktio palauttaa iteraattorin merkkijonon loppuun.
rbegin() Tämä funktio palauttaa käänteisen iteraattorin, joka osoittaa merkkijonon loppuun.
render() Tämä funktio palauttaa käänteisen iteraattorin, joka osoittaa merkkijonon alun edelliseen.
cbegin() Tämä funktio palauttaa jatkuvan iteraattorin, joka osoittaa merkkijonon alkuun, sillä sitä ei voida käyttää sen osoittaman sisällön muokkaamiseen.
muutama () Tämä funktio palauttaa jatkuvan iteraattorin, joka osoittaa merkkijonon seuraavaan loppuun, sillä sitä ei voida käyttää sen osoittaman sisällön muokkaamiseen.
crbegin() Tämä funktio palauttaa jatkuvan käänteisen iteraattorin, joka osoittaa merkkijonon loppuun, sillä sitä ei voida käyttää sen osoittaman sisällön muokkaamiseen.
crend() Tämä funktio palauttaa vakion käänteisen iteraattorin, joka osoittaa merkkijonon alkuun, sitä ei voida käyttää sen osoittaman sisällön muokkaamiseen.

Algoritmi:

  1. Ilmoita merkkijono
  2. Yritä iteroida merkkijono käyttämällä kaikentyyppisiä iteraattoreita
  3. Kokeile muuttaa merkkijonon elementtiä.
  4. Näytä kaikki iteraatiot.

Esimerkki:

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)   

Lähtö
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 

Aika monimutkaisuus: O(1)

Tilan monimutkaisuus: O(n) missä n on merkkijonon koko

4) Manipulointitoiminnot:

Toiminto Määritelmä
kopioi ('char array' len pos)  Tämä funktio kopioi sen argumenteissa mainitun kohdemerkkijonon alimerkkijonon. Kopioinnin aloittamiseen tarvitaan 3 argumenttia kohdemerkkijonon pituus ja aloituspaikka merkkijonossa.
vaihtaa() Tämä toiminto vaihtaa merkkijonon toiseen

Esimerkki:

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

Lähtö
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 


Täytyy lukea: C++-merkkijonoluokka ja sen sovellukset