std::string osztály C++ nyelven

A C++ definíciójában van egy módja annak, hogy ábrázolja a karaktersorozat, mint az osztály tárgya . Ezt az osztályt std:: stringnek hívják. A karakterlánc osztály a karaktereket bájtok sorozataként tárolja az engedélyezés funkcióval hozzáférés az egybájtos karakterhez .

String vs Character Array

Húr

Char Array

 A karakterlánc a osztály, amely objektumokat határoz meg amelyeket karakterfolyamként kell ábrázolni. A karaktertömb egyszerűen egy karakterek tömbje amelyet null karakterrel lehet lezárni.
A karakterláncok esetében a memória az dinamikusan allokálva . Igény szerint futási időben több memória foglalható le. Mivel nincs előre lefoglalva memória nem vész kárba a memória . A karaktertömb méretének meg kell lennie statikusan kiosztva szükség esetén nem lehet több memóriát lefoglalni futási időben. Fel nem használt allokálva a memória is kárba vesz
A karakterláncok objektumként vannak ábrázolva nincs tömbbomlás előfordul. Van egy fenyegetés tömbbomlás a karaktertömb esetében. 
A húrok lassabbak a megvalósításhoz képest, mint a karaktertömb. Végrehajtása a karaktertömb gyorsabb mint std:: string. 
A karakterlánc osztály határozza meg számos funkció amelyek lehetővé teszik a karakterláncokon végzett sokrétű műveleteket. Karaktertömbök ne kínálj sok beépített funkciók húrok manipulálására.

Műveletek húrokon

1) Bemeneti funkciók

Funkció Meghatározás
getline() Ez a funkció a felhasználó által az objektum memóriájába bevitt karakterfolyam tárolására szolgál.
push_back() Ez a funkció egy karakter bevitelére szolgál a karakterlánc végén.
pop_back()

Példa:

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

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

Időbonyolultság: O(1)

Térkomplexitás: O(n) ahol n a karakterlánc mérete

2) Kapacitásfüggvények

Funkció Meghatározás
kapacitás() Ez a függvény visszaadja a karakterlánchoz lefoglalt kapacitást, amely egyenlő vagy nagyobb lehet, mint a karakterlánc mérete. További hely van lefoglalva, hogy amikor az új karaktereket hozzáadjuk a karakterlánchoz, a műveletek hatékonyan hajthatók végre.
átméretezés() Ez a funkció megváltoztatja a karakterlánc méretét, a méret növelhető vagy csökkenthető.
hossz() Ez a függvény megkeresi a karakterlánc hosszát.
fit_zsugorodás() Ez a függvény csökkenti a karakterlánc kapacitását, és egyenlővé teszi a karakterlánc minimális kapacitásával. Ez a művelet hasznos memóriamegtakarításhoz, ha biztosak vagyunk abban, hogy nem kell további karaktereket hozzáadni.

Példa:

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

Kimenet
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 

Időbonyolultság: O(1)

Térkomplexitás: O(n) ahol n a karakterlánc mérete

3) Iterátor funkciók

Funkció Meghatározás
kezdődik() Ez a függvény egy iterátort ad vissza a karakterlánc elejére.
vége() Ez a függvény egy iterátort ad vissza a karakterlánc végére.
rbegin() Ez a függvény egy fordított iterátort ad vissza, amely a karakterlánc végére mutat.
render() Ez a függvény egy fordított iterátort ad vissza, amely a karakterlánc elejére mutat.
cbegin() Ez a függvény egy állandó iterátort ad vissza, amely a karakterlánc elejére mutat, és nem használható a tartalom módosítására, amelyre mutat.
néhány() Ez a függvény egy állandó iterátort ad vissza, amely a karakterlánc következő végére mutat, és nem használható a tartalom módosítására, amelyre mutat.
crbegin() Ez a függvény egy állandó fordított iterátort ad vissza, amely a karakterlánc végére mutat, és nem használható a tartalom módosítására, amelyre mutat.
crend() Ez a függvény egy állandó fordított iterátort ad vissza, amely a karakterlánc elejére mutat, és nem használható a tartalom módosítására, amelyre mutat.

Algoritmus:

  1. Egy karakterlánc deklarálása
  2. Próbálja meg ismételni a karakterláncot minden típusú iterátor használatával
  3. Próbálja meg módosítani a karakterlánc elemét.
  4. Az összes iteráció megjelenítése.

Példa:

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)   

Kimenet
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 

Időbonyolultság: O(1)

Térkomplexitás: O(n) ahol n a karakterlánc mérete

4) Funkciók manipulálása:

Funkció Meghatározás
copy('char array' len pos)  Ez a függvény az argumentumaiban említett célkaraktertömb részstringjét másolja. A másolás megkezdéséhez 3 argumentum szükséges a cél char tömb hosszára és a karakterlánc kezdőpozíciójára.
csere() Ez a függvény felcseréli az egyik karakterláncot a másikkal

Példa:

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

Kimenet
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 


El kell olvasni: C++ karakterlánc osztály és alkalmazásai