стд::стринг класа у Ц++
Ц++ у својој дефиницији има начин да представи а низ знакова као објекат класе . Ова класа се зове стд:: стринг. Стринг класа складишти знакове као низ бајтова са функционалношћу дозвољавања приступ једнобајтном карактеру .
Стринг против низа знакова
| Стринг | Цхар Арраи |
|---|---|
| Низ је а класа која дефинише објекте који се представљају као ток ликова. | Низ знакова је једноставно низ знакова који се може завршити нултим карактером. |
| У случају стрингова меморија је додељује се динамички . Више меморије се може доделити у време извршавања на захтев. Пошто ниједна меморија није унапред додељена ниједна меморија се не троши . | Величина низа знакова мора бити распоређених статички више меморије се не може доделити у току рада ако је потребно. Неискоришћено додељено памћење се такође троши |
| Како су стрингови представљени као објекти нема распада низа јавља. | Постоји а претња од распадање низа у случају низа знакова. |
| Жице су спорије у поређењу са имплементацијом него низ знакова. | Имплементација низ знакова је бржи него стд:: стринг. |
| Стринг класа дефинише низ функционалности који омогућавају вишеструке операције на низовима. | Низови знакова не нуди многи уграђене функције да манипулише низовима. |
Операције на низовима
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) Функције итератора
| Функција | Дефиниција |
|---|---|
| почети() | Ова функција враћа итератор на почетак стринга. |
| крај() | Ова функција враћа итератор на крај низа. |
| рбегин() | Ова функција враћа обрнути итератор који показује на крај стринга. |
| рендер() | Ова функција враћа обрнути итератор који показује на претходни почетак стринга. |
| цбегин() | Ова функција враћа константни итератор који показује на почетак стринга који се не може користити за измену садржаја на који указује. |
| неколико () | Ова функција враћа константни итератор који показује на следећи крај стринга који се не може користити за модификовање садржаја на који указује. |
| црбегин() | Ова функција враћа константни обрнути итератор који показује на крај стринга који се не може користити за измену садржаја на који указује. |
| кренд() | Ова функција враћа константни обрнути итератор који показује на претходни почетак стринга који се не може користити за модификовање садржаја на који указује. |
алгоритам:
- Декларишите низ
- Покушајте да поновите низ користећи све типове итератора
- Покушајте да измените елемент низа.
- Прикажи све итерације.
Пример:
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
Обавезно прочитати: Ц++ стринг класа и њене апликације