стд::стринг класа у Ц++

Ц++ у својој дефиницији има начин да представи а низ знакова као објекат класе . Ова класа се зове стд:: стринг. Стринг класа складишти знакове као низ бајтова са функционалношћу дозвољавања приступ једнобајтном карактеру .

Стринг против низа знакова

Стринг

Цхар Арраи

 Низ је а класа која дефинише објекте који се представљају као ток ликова. Низ знакова је једноставно низ знакова који се може завршити нултим карактером.
У случају стрингова меморија је додељује се динамички . Више меморије се може доделити у време извршавања на захтев. Пошто ниједна меморија није унапред додељена ниједна меморија се не троши . Величина низа знакова мора бити распоређених статички више меморије се не може доделити у току рада ако је потребно. Неискоришћено додељено памћење се такође троши
Како су стрингови представљени као објекти нема распада низа јавља. Постоји а претња од распадање низа у случају низа знакова. 
Жице су спорије у поређењу са имплементацијом него низ знакова. Имплементација низ знакова је бржи него стд:: стринг. 
Стринг класа дефинише низ функционалности који омогућавају вишеструке операције на низовима. Низови знакова не нуди многи уграђене функције да манипулише низовима.

Операције на низовима

1) Улазне функције

Функција Дефиниција
гетлине() Ова функција се користи за чување низа знакова које је корисник унео у меморију објеката.
пусх_бацк() Ова функција се користи за унос карактера на крају стринга.
поп_бацк() Уведена из Ц++11 (за стрингове), ова функција се користи за брисање последњег знака из стринга. 

Пример:

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

Излаз
The initial string is : The string after push_back operation is : s The string after pop_back operation is :  

Временска сложеност: О(1)

Сложеност простора: О(н) где је н величина низа

2) Функције капацитета

Функција Дефиниција
капацитет() Ова функција враћа капацитет који је додељен низу који може бити једнак или већи од величине стринга. Додатни простор се додељује тако да када се нови карактери додају у низ, операције могу да се ураде ефикасно.
промени величину() Ова функција мења величину стринга, величина се може повећати или смањити.
дужина() Ова функција проналази дужину низа.
схринк_то_фит() Ова функција смањује капацитет низа и чини га једнаким минималном капацитету низа. Ова операција је корисна за уштеду додатне меморије ако смо сигурни да није потребно додатно додавање знакова.

Пример:

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

Излаз
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 

Временска сложеност: О(1)

Сложеност простора: О(н) где је н величина низа

3) Функције итератора

Функција Дефиниција
почети() Ова функција враћа итератор на почетак стринга.
крај() Ова функција враћа итератор на крај низа.
рбегин() Ова функција враћа обрнути итератор који показује на крај стринга.
рендер() Ова функција враћа обрнути итератор који показује на претходни почетак стринга.
цбегин() Ова функција враћа константни итератор који показује на почетак стринга који се не може користити за измену садржаја на који указује.
неколико () Ова функција враћа константни итератор који показује на следећи крај стринга који се не може користити за модификовање садржаја на који указује.
црбегин() Ова функција враћа константни обрнути итератор који показује на крај стринга који се не може користити за измену садржаја на који указује.
кренд() Ова функција враћа константни обрнути итератор који показује на претходни почетак стринга који се не може користити за модификовање садржаја на који указује.

алгоритам:

  1. Декларишите низ
  2. Покушајте да поновите низ користећи све типове итератора
  3. Покушајте да измените елемент низа.
  4. Прикажи све итерације.

Пример:

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)   

Излаз
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 

Временска сложеност: О(1)

Сложеност простора: О(н) где је н величина низа

4) Функције манипулисања:

Функција Дефиниција
цопи('цхар арраи' лен пос)  Ова функција копира подстринг у циљном низу знакова који се спомиње у његовим аргументима. Потребна су 3 аргумента циљне дужине низа знакова да се копирају и почетна позиција у стрингу за почетак копирања.
свап() Ова функција замењује један стринг другим

Пример:

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

Излаз
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 


Обавезно прочитати: Ц++ стринг класа и њене апликације

 


Топ Чланци

Категорија