logo

std::string klase valodā C++

C++ definīcijā ir veids, kā attēlot a rakstzīmju secība kā klases objekts . Šo klasi sauc par std:: virkni. Virknes klase saglabā rakstzīmes kā baitu secību ar atļaušanas funkcionalitāti piekļuve viena baita rakstzīmei .

Virkne pret rakstzīmju masīvu

Stīga



Char Array

Virkne ir a klase, kas definē objektus kas tiek attēloti kā rakstzīmju plūsma. Rakstzīmju masīvs ir vienkārši rakstzīmju masīvs kuru var beigt ar nulles rakstzīmi.
Stīgu gadījumā atmiņa ir tiek piešķirts dinamiski . Pēc pieprasījuma darbības laikā var piešķirt vairāk atmiņas. Tā kā atmiņa nav iepriekš piešķirta, neviena atmiņa netiek tērēta . Rakstzīmju masīva izmēram ir jābūt piešķirts statiski , ja nepieciešams, izpildes laikā nevar piešķirt vairāk atmiņas. Neizmantots piešķirts atmiņa arī tiek izniekota
Tā kā virknes tiek attēlotas kā objekti, nav masīva sabrukšanas rodas. Tur ir draudi masīva sabrukšana rakstzīmju masīva gadījumā.
Stīgas ir lēnākas salīdzinot ar ieviešanu, nekā rakstzīmju masīvs. Īstenošana rakstzīmju masīvs ir ātrāks nekā std:: virkne.
Stīgu klase definē vairākas funkcijas kas ļauj veikt kolektora darbības ar virknēm. Rakstzīmju masīvi nepiedāvāt daudzi iebūvētās funkcijas lai manipulētu ar stīgām.

Operācijas ar stīgām

1) Ievades funkcijas

Funkcija Definīcija
getline() Šo funkciju izmanto, lai saglabātu rakstzīmju straumi, ko lietotājs ievadījis objekta atmiņā.
atgrūst() Šo funkciju izmanto, lai ievadītu rakstzīmi virknes beigās.
pop_back() Ieviesta no C++11 (virknēm), šī funkcija tiek izmantota, lai dzēstu pēdējo rakstzīmi no virknes.

Piemērs:

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

>

>

Izvade

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

Laika sarežģītība: O(1)

Telpas sarežģītība: O(n) kur n ir virknes lielums

cik nedēļas mēnesī

2) Jaudas funkcijas

Funkcija Definīcija
ietilpība () Šī funkcija atgriež virknei piešķirto jaudu, kas var būt vienāda ar virknes lielumu vai lielāka par to. Papildu vieta tiek piešķirta, lai, pievienojot virknei jaunas rakstzīmes, darbības varētu veikt efektīvi.
mainīt izmēru () Šī funkcija maina virknes izmēru, izmēru var palielināt vai samazināt.
garums () Šī funkcija atrod virknes garumu.
shrink_to_fit() Šī funkcija samazina virknes ietilpību un padara to vienādu ar virknes minimālo ietilpību. Šī darbība ir noderīga, lai ietaupītu papildu atmiņu, ja esam pārliecināti, ka vairs nav jāpievieno rakstzīmes.

Piemērs:

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

>

>

Izvade

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>

Laika sarežģītība: O(1)

Telpas sarežģītība: O(n) kur n ir virknes lielums

3) Iteratora funkcijas

Funkcija Definīcija
sākt () Šī funkcija atgriež iteratoru virknes sākumā.
beigas () Šī funkcija atgriež iteratoru uz nākamo līdz virknes beigām.
rbegin() Šī funkcija atgriež apgriezto iteratoru, kas norāda uz virknes beigām.
renderēt () Šī funkcija atgriež apgriezto iteratoru, kas norāda uz virknes sākuma iepriekšējo.
cbegin() Šī funkcija atgriež pastāvīgu iteratoru, kas norāda uz virknes sākumu, to nevar izmantot, lai mainītu saturu, uz kuru tā norāda.
daži() Šī funkcija atgriež pastāvīgu iteratoru, kas norāda uz nākamo virknes beigām, un to nevar izmantot, lai mainītu saturu, uz kuru tā norāda.
crbegin() Šī funkcija atgriež pastāvīgu reverso iteratoru, kas norāda uz virknes beigām, un to nevar izmantot, lai mainītu saturu, uz kuru tā norāda.
crend ​​() Šī funkcija atgriež pastāvīgu reverso iteratoru, kas norāda uz virknes sākuma iepriekšējo, to nevar izmantot, lai mainītu saturu, uz kuru tā norāda.

Algoritms:

  1. Deklarējiet virkni
  2. Mēģiniet atkārtot virkni, izmantojot visu veidu iteratorus
  3. Mēģiniet modificēt virknes elementu.
  4. Parādiet visas iterācijas.

Piemērs:

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:'><' '; // 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<<' '; 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<<' '; return 0; } //Code modified by Balakrishnan R (rbkraj000)>

>

>

Izvade

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>

Laika sarežģītība: O(1)

Telpas sarežģītība: O(n) kur n ir virknes lielums

4) Manipulācijas funkcijas:

Funkcija Definīcija
kopija (char masīvs, len, poz.) Šī funkcija kopē apakšvirkni mērķa rakstzīmju masīvā, kas minēts tās argumentos. Lai sāktu kopēšanu, nepieciešami 3 argumenti, mērķa rakstzīmju masīvs, kopējamais garums un sākuma pozīcija virknē.
apmainīt () Šī funkcija apmaina vienu virkni ar citu

Piemērs:

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

javafx

>

>

Izvade

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>

Vajag izlasīt: C++ stīgu klase un tās lietojumprogrammas