Niz se imenuje niz znakov. V C++ je tok/zaporedje znakov shranjeno v matriki znakov. C++ vključuje razred std::string, ki se uporablja za predstavitev nizov. Je eden najbolj temeljnih podatkovnih tipov v C++ in prihaja z ogromnim naborom vgrajenih funkcij. V tem članku si bomo ogledali funkcije izračunov nizov.
Kaj je std::string?
Std::string je razred v C++ od C++98. Ta razred je standardna predstavitev za besedilni niz. Vključuje nekaj tipičnih operacij nizov, kot so iskanje, zamenjava, združevanje, primerjava itd. Prisoten je v naslovna datoteka.
Deklaracija in inicializacija niza
std::string company = 'techcodeview.com!';>
Pogosto uporabljene nizovne funkcije v C++
Razred std::string vsebuje funkcije za zagotavljanje nekaterih pogostih operacij z nizi. Spodnja tabela vsebuje nekaj najpogosteje uporabljenih funkcij v C++:
| da ne | Kategorija | Funkcije in operaterji | Funkcionalnost |
|---|---|---|---|
| 1. rudyard kipling če razlaga | Dolžina niza | dolžina() ali velikost() | Vrnil bo dolžino niza. |
| 2. | Dostop do znakov | Indeksiranje (z uporabo array[index]) | Za dostop do posameznih znakov z uporabo matričnega indeksiranja. |
| pri() | Uporablja se za dostop do znaka na določenem indeksu. | ||
| 3. | Pripenjanje in združevanje nizov | + Operater | Operator + se uporablja za združevanje dveh nizov. |
| Funkcija append() doda en niz na konec drugega. | |||
| 4. | Primerjava nizov | == Operater | Nize lahko primerjate z uporabo operatorja ==. |
| Funkcija compare() vrne celoštevilsko vrednost, ki označuje rezultat primerjave. | |||
| 5. | Podnizi | Uporabite funkcijo substr(), da izvlečete podniz iz niza. | |
| 6. | Iskanje | Funkcija find() vrne položaj prvega pojava podniza. | |
| 7. | Spreminjanje nizov | zamenjati() | Uporabite funkcijo replace(), da spremenite del niza. |
| vstavi() | Funkcija insert() doda podniz na določen položaj. | ||
| izbrisati() | Uporabite funkcijo erase(), da odstranite del niza. | ||
| 8. | Pretvorba | c_str() | Če želite iz std::string pridobiti niz v slogu C, lahko uporabite funkcijo c_str(). |
Opomba: Zgornje funkcije delujejo samo za nize sloga C++ (objekti std::string), ne pa tudi za nize sloga C (matrika znakov).
1. Dolžina niza – length() ali size()
Dolžino niza (število znakov) lahko poiščemo z bodisi dolžina() ali velikost() funkcija razreda std::string.
Sintaksa
string_object. size() or string_object. length()>
Parametri
- Ta funkcija ne sprejema nobenega parametra.
Povratna vrednost
- Ta funkcija vrne število znakov v objektu niza.
Primer
std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>
Vrnil bo dolžino niza besedilo ki je 13.
2. Dostop do znakov – at()
Na splošno lahko do znaka niza dostopamo z uporabo [] matrični indeksni operator in indeksiranje. Toda std::string ima tudi funkcijo z imenom pri() ki se lahko uporablja za dostop do znakov niza.
Sintaksa
string_object. at( index );>
Parametri
- indeks: Predstavlja položaj znaka v nizu.
Povratna vrednost
- Ta funkcija vrne znak, ki je prisoten v kazalo.
Primer
std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>
Std::cout bo na konzolo natisnil K, saj je to znak pri indeksu 3.
3. Združevanje nizov – operator append() ali +
V C++ lahko združimo niz z dvema metodama:
1. + Operater
Operator + je preobremenjen v razredu std::string za izvajanje veriženja nizov.
Sintaksa
string_object1 + string_object2>
Primer
std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>
Operator + se uporablja za združevanje dveh nizov. Niz fullName bo techcodeview.com.
2. pripni()
Funkcija append() je še ena funkcija članica za združevanje dveh nizov.
Sintaksa
string_object1. append ( string2 )>
Parametri
- string2: Ta funkcija vzame niz, ki ga želite dodati, kot parameter. Lahko je niz v slogu C ali C++.
Povratna vrednost
- Sklicevanje na končni niz.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string> Funkcija append() doda en niz na konec drugega.
4. Primerjava nizov – operator compare() ali ==
Tako kot pri veriženju lahko tudi primerjavo nizov izvedemo z dvema metodama:
1. == Operater
Operator enakosti lahko uporabite za primerjavo obeh nizov, saj je za to operacijo preobremenjen v razredu std::string.
Sintaksa
string_object1 == string_object2>
To se bo vrnilo prav če sta oba niza enaka, sicer vrne lažno.
Primer
std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }> Tukaj bo natisnjeno Nizi niso enaki, ker se bo vrnil operator == lažno.
2. primerjaj()
Funkcija compare() je funkcija članica razreda std::string, ki se lahko uporablja za primerjavo dveh nizov.
Sintaksa
str1. compare( str2 );>
Parametri
- str2: To je niz za primerjavo. Lahko je niz v slogu C ali C++.
Povratna vrednost
- Če sta niza enaka, vrni nič.
- Če je str1 večji od str2, vrni vrednost >0
- Če je str2 večji od str1, vrni vrednost <0
Primer
string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>
Rezultat bo vseboval vrednost, manjšo od nič, ker je str2 večji od str1.
Podniz str2 lahko primerjamo tudi s primerjalno funkcijo():
str1.compare(position, length, str2);>
kje,
- položaj : položaj prvega podniza znakov. dolžina: dolžina podniza. str2: predmet niza za primerjavo.
5. Iskanje – find()
Lahko uporabimo najti() funkcija razreda std::string za preverjanje, ali je dani znak ali podniz prisoten v nizu ali delu niza.
Sintaksa find()
str1.find(var);>
Parametri
- var: Lahko je niz v slogu C, niz v slogu C++ ali znak, ki ga je treba iskati v nizu.
Povratna vrednost
- Vrne kazalec na prvo pojavitev znaka ali podniza v nizu.
Primer
std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring> Spremenljivka položaja bo vsebovala 4, ki je začetek prvega pojava programiranja niza v besedilu niza.
6. Ustvarite podniz – substr()
Lahko uporabimo funkcijo substr(). da ustvarite del niza kot nov objekt niza. Je funkcija članica razreda std::string.
Sintaksa substr() v C
str1. substr ( start, end );>
Parametri
- start: Začetni položaj podniza, ki bo ustvarjen. konec: konec podniza, ki bo ustvarjen.
Vrsta vrnitve
- Vrne novo ustvarjeni objekt niza.
Primer
std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>
V zgornjem primeru. the sub niz bo vseboval svet.
Spreminjanje nizov
Naslednja funkcija nam omogoča spreminjanje trenutnega niza.
1. vstavi()
Funkcija insert() nam ne omogoča samo dodajanja niza, ampak nam omogoča tudi, da ga dodamo na določen položaj. Je tudi funkcija članica razreda std::string.
Sintaksa
str1. insert (index, str2);>
Parametri
- str2: niz za vstavljanje. indeks: položaj, kamor želite vstaviti nov niz
Vrsta povratka
- Sklicevanje na str1.
Primer
std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>
2. zamenjaj()
Funkcija replace() zamenja del niza z danim drugim nizom. Za razliko od vstavljanja so znaki v delu, kamor je treba vstaviti nov niz, odstranjeni.
Sintaksa
str1. replace ( index, size, str2 );>
Parametri
- indeks: Indeks, kje začeti zamenjavo novega niza. velikost: dolžina dela niza, ki ga je treba zamenjati. str2: nov niz, ki ga želite vstaviti.
Vrsta povratka
- Sklicevanje na str1.
Primer
std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>
3. izbriši()
Funkcija erase() je funkcija članica razreda std::string, ki se uporablja za odstranitev znaka ali dela niza.
Sintaksa
str1 .erase( start, end);>
Parametri
- začetek: začetni položaj. konec: Končni položaj.
Vrsta povratka
- Sklicevanje na str1.
Primer
std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>
Pretvori std::string v niz C – c_str)_
Funkcija c_str() je funkcija članica, ki se uporablja za pretvorbo niza v slogu C++, tj. objektov std::string, v niz v slogu C, tj. niza znakov.
Sintaksa
str1.c_str()>
Parametri
- Ta funkcija ne sprejema nobenega parametra.
Povratna vrednost
- Kazalec na enakovreden niz znakov.
Primer
std::string str = 'C++'; const char* cstr = str.c_str()>
Primer nizovnih funkcij v C++
Spodnja koda prikazuje uporabo zgoraj navedenih nizovnih funkcij:
palindromsko število
C++
// C++ Code to demostrate various functions available in> // String class> > #include> #include> > using> namespace> std;> > int> main()> {> >// Creating and initializing strings> >string greeting =>'Hello, World!'>;> >cout << greeting << endl;> >string name;> > >// Input from the user> >cout <<>'Enter your name: '>;> >cin>> ime;> >cout << name << endl;> > >// String length> >int> length = greeting.length();> >cout << length << endl;> > >// Accessing characters> >char> firstChar = greeting[0];> >char> secondChar = greeting.at(1);> >cout << firstChar <<>' '> << secondChar << endl;> > >// Appending and concatenating strings> >string firstName =>'Geek'>;> >string lastName =>'Geeks'>;> >string fullName = firstName +>' '> + lastName;> >cout << fullName << endl;> >string base =>'Hello'>;> >cout << base << endl;> >base.append(>' World!'>);> >cout << base << endl;> > >// String comparison> >string str1 =>'apple'>;> >string str2 =>'banana'>;> >if> (str1 == str2) {> >cout <<>'Strings are equal'> << endl;> >}> >else> {> >cout <<>'Strings are not equal'> << endl;> >}> > >int> result = str1.compare(str2);> >if> (result == 0) {> >cout <<>'Strings are equal'> << endl;> >}> >else> if> (result <0) {> >cout <<>'str1 comes before str2'> << endl;> >}> >else> {> >cout <<>'str1 comes after str2'> << endl;> >}> > >// Substrings> >string text =>'Hello, World!'>;> >cout << text << endl;> >string sub = text.substr(7, 5);> >cout << sub << endl;> > >// Searching> >string searchIn =>'C++ Programming'>;> >size_t> position = searchIn.find(>'Programming'>);> >if> (position != string::npos) {> >cout <<>'Found at position '> << position << endl;> >}> >else> {> >cout <<>'Not found'> << endl;> >}> > >// Modifying strings> >string modify =>'I like dogs.'>;> >modify.replace(7, 4,>'cats'>);> >cout << modify << endl;> >modify.insert(6,>' black'>);> >cout << modify << endl;> >modify.erase(6, 6);> >cout << modify << endl;> > >// Conversion> >string str =>'C++'>;> >const> char>* cstr = str.c_str();> >cout << cstr << endl;> > >return> 0;> }> |
>
>
Izhod
Hello, World! Enter your name: Geeks Geeks 13 H e Geek Geeks Hello Hello World! Strings are not equal str1 comes before str2 Hello, World! World Found at position 4 I like cats. I like black cats. I like cats. C++>