Merkkijonoa kutsutaan merkkijonoksi. C++:ssa merkkijono/merkkijono tallennetaan char-taulukkoon. C++ sisältää std::string-luokan, jota käytetään merkkijonojen esittämiseen. Se on yksi C++:n perustietotyypeistä, ja siinä on valtava joukko sisäänrakennettuja toimintoja. Tässä artikkelissa tarkastellaan merkkijonolaskennan toimintoja.
Mikä on std::string?
Std::string on C++:n luokka C++98:sta lähtien. Tämä luokka on tekstimerkkijonon standardiesitys. Se sisältää joitain tyypillisiä merkkijonotoimintoja, kuten etsi, korvaa, ketjuta, vertaa jne. Se on mukana otsikkotiedosto.
Merkkijonon ilmoittaminen ja alustus
std::string company = 'techcodeview.com!';>
Yleisesti käytetyt merkkijonofunktiot C++:ssa
Std::string-luokka sisältää toimintoja, jotka tarjoavat joitain yleisiä merkkijonotoimintoja. Alla oleva taulukko sisältää joitain C++:n yleisimmin käytetyistä toiminnoista:
| Kyllä ei. | Kategoria | Toiminnot ja operaattorit | Toiminnallisuus |
|---|---|---|---|
| 1. python tuple lajiteltu | String pituus | pituus() tai koko() | Se palauttaa merkkijonon pituuden. |
| 2. | Pääsy hahmoihin | Indeksointi (käyttämällä array[index]) | Yksittäisten merkkien käyttäminen taulukon indeksoinnin avulla. |
| at() | Käytetään määritetyn indeksin merkin käyttämiseen. | ||
| 3. | Merkkijonojen liittäminen ja ketjuttaminen | + Operaattori | + -operaattoria käytetään kahden merkkijonon ketjuttamiseen. |
| Append()-funktio lisää yhden merkkijonon toisen loppuun. | |||
| 4. | Merkkijonojen vertailu | == Operaattori | Voit verrata merkkijonoja ==-operaattorilla. |
| Vertaa()-funktio palauttaa kokonaisluvun, joka ilmaisee vertailun tuloksen. | |||
| 5. | Alimerkkijonot | Käytä substr()-funktiota poimimaan osamerkkijono merkkijonosta. | |
| 6. | Etsitään | Find()-funktio palauttaa alimerkkijonon ensimmäisen esiintymän sijainnin. | |
| 7. | Merkkien muokkaaminen | korvata() | Käytä vaihto-funktiota () muokataksesi osaa merkkijonosta. |
| insert() | Insert()-funktio lisää alimerkkijonon tiettyyn kohtaan. | ||
| Erase() | Käytä erase()-funktiota poistaaksesi osan merkkijonosta. | ||
| 8. | Muuntaminen | c_str() | C-tyylisen merkkijonon saamiseksi std::merkkijonosta voit käyttää c_str()-funktiota. |
Huomautus: Yllä olevat toiminnot toimivat vain C++ Style -merkkijonoissa (std::string-objektit) eivät C-tyylimerkkijonoissa (merkkijono).
1. Merkkijonon pituus – pituus() tai koko()
Voimme löytää merkkijonon pituuden (merkkien lukumäärän) käyttämällä jompaakumpaa pituus() tai koko() std::string-luokan funktio.
Syntaksi
string_object. size() or string_object. length()>
Parametrit
- Tämä toiminto ei ota mitään parametreja.
Palautusarvo
- Tämä funktio palauttaa merkkijonoobjektin merkkien määrän.
Esimerkki
std::string text = 'geeksforGeeks'; int length = text.length(); //or int length = text.size();>
Se palauttaa merkkijonon pituuden teksti joka on 13.
2. Hakumerkit – at()
Yleensä voimme käyttää merkkijonon merkkiä käyttämällä [] taulukon alaindeksioperaattori ja indeksointi. Mutta std::stringillä on myös funktio nimeltä at() jolla voidaan käyttää merkkijonon merkkejä.
Syntaksi
string_object. at( index );>
Parametrit
- index: Se edustaa merkin paikkaa merkkijonossa.
Palautusarvo
- Tämä funktio palauttaa kohdassa olevan merkin indeksi.
Esimerkki
std::string str = 'GEEKSFORGEEKS'; std::cout << str.at(3);>
Std::cout tulostaa konsolissa K:n, koska se on indeksissä 3 oleva merkki.
3. Merkkijonojen ketjuttaminen – append() tai + Operaattori
Voimme ketjuttaa merkkijonon C++:ssa kahdella menetelmällä:
1. + Operaattori
+-operaattori on ylikuormitettu std::string-luokassa merkkijonojen yhdistämisen suorittamiseksi.
Syntaksi
string_object1 + string_object2>
Esimerkki
std::string firstName = 'Geeks'; std::string lastName = 'forGeeks'; std::string fullName = firstName + ' ' + lastName;>
+ -operaattoria käytetään kahden merkkijonon ketjuttamiseen. Merkkijono fullName on techcodeview.com.
2. append()
Append()-funktio on toinen jäsenfunktio kahden merkkijonon ketjuttamiseksi.
Syntaksi
string_object1. append ( string2 )>
Parametrit
- merkkijono2: Tämä funktio ottaa parametriksi lisättävän merkkijonon. Se voi olla sekä C- että C++-tyylimerkkijono.
Palautusarvo
- Viittaus viimeiseen merkkijonoon.
std::string base = 'Hey! Geeks'; base.append(' Welcome to techcodeview.com!'); // Append a string> Append()-funktio lisää yhden merkkijonon toisen loppuun.
4. Merkkijonojen vertailu – vertaa() tai == Operaattori
Kuten ketjutuksessa, voimme tehdä merkkijonojen vertailun kahdella menetelmällä:
1. == Operaattori
Tasa-arvooperaattoria voidaan käyttää kahden merkkijonon vertaamiseen, koska se on ylikuormitettu tälle toiminnolle luokassa std::string.
Syntaksi
string_object1 == string_object2>
Tämä palaa totta jos molemmat merkkijonot ovat yhtä suuret, muussa tapauksessa palauttaa väärä.
Esimerkki
std::string str1 = 'apple'; std::string str2 = 'banana'; if (str1 == str2) { std::cout << 'Strings are equal'; } else { std::cout << 'Strings are not equal'; }> Tässä teksti Merkkijonot eivät ole tasa-arvoisia tulostetaan, koska ==-operaattori palauttaa väärä.
2. vertaa ()
Vertaa()-funktio on std::string-luokan jäsenfunktio, jota voidaan käyttää kahden merkkijonon vertailuun.
Syntaksi
str1. compare( str2 );>
Parametrit
- str2: Se on verrattava merkkijono. Se voi olla sekä C- että C++-tyylistä merkkijonoa.
Palautusarvo
- Jos merkkijonot ovat yhtä suuret, palauta nolla.
- Jos str1 on suurempi kuin str2, palauta arvo >0
- Jos str2 on suurempi kuin str1, palauta arvo <0
Esimerkki
string str1 = 'Geeks'; string str2: = 'Geeksfor'; int result = str1. compare (str2);>
Tulos sisältää arvon, joka on pienempi kuin nolla, koska str2 on suurempi kuin str1.
Voimme myös verrata str2:n osamerkkijonoa käyttämällä vertailufunktiota ():
str1.compare(position, length, str2);>
missä,
- sijainti: ensimmäisen merkin alimerkkijonon sijainti. pituus: alimerkkijonon pituus. str2: Verrattava merkkijonoobjekti.
5. Haku – löydä()
Voimme käyttää löytö() std::string-luokan funktio tarkistaaksesi, onko merkkijonossa tai merkkijonon osassa tietty merkki tai osamerkkijono.
liitokset ja liitostyypit
Find() syntaksi
str1.find(var);>
Parametrit
- var: Se voi olla C-tyylinen merkkijono, C++-tyylinen merkkijono tai merkki, jota haetaan merkkijonosta.
Palautusarvo
- Se palauttaa osoittimen merkin tai alimerkkijonon ensimmäiseen esiintymiseen merkkijonossa.
Esimerkki
std::string text = 'C++ Programming'; int position = text.find('Programming'); // Find the position of a substring> Paikkamuuttuja sisältää luvun 4, joka on merkkijonon ensimmäisen esiintymisen alku. Ohjelmointi merkkijonotekstissä.
6. Luo alimerkkijono – substr()
Voimme käyttää substr()-funktio luodaksesi osan merkkijonosta uutena merkkijonoobjektina. Se on std::string-luokan jäsenfunktio.
Substr():n syntaksi C:ssä
str1. substr ( start, end );>
Parametrit
- aloitus: Luotavan osamerkkijonon aloituspaikka. end: Luotavan osamerkkijonon loppu.
Palautustyyppi
- Se palauttaa juuri luodun merkkijonoobjektin.
Esimerkki
std::string text = 'Hello, World!'; std::string sub = text.substr(7, 5); // Extract 'World'>
Yllä olevassa esimerkissä. the sub merkkijono sisältää maailman.
Merkkien muokkaaminen
Seuraava toiminto mahdollistaa nykyisen merkkijonon muokkaamisen.
1. insert()
Insert()-funktio ei vain salli meidän lisätä merkkijonoa, vaan antaa meille myös mahdollisuuden lisätä sen määritettyyn kohtaan. Se on myös std::string-luokan jäsenfunktio.
Syntaksi
str1. insert (index, str2);>
Parametrit
- str2: lisättävä merkkijono. index: paikka, johon uusi merkkijono lisätään
Palautustyyppi
- Viittaus str1:een.
Esimerkki
std::string text = 'I have a cat.'; text.insert(9, ' black'); // Insert ' black' at position 9>
2. korvaa()
Replace()-funktio korvaa osan merkkijonosta annetulla toisella merkkijonolla. Toisin kuin insert, sen osan merkit, johon uusi merkkijono lisätään, poistetaan.
Syntaksi
str1. replace ( index, size, str2 );>
Parametrit
- index: Hakemisto, josta aloittaa uuden merkkijonon korvaaminen. koko: vaihdettavan merkkijonon osan pituus. str2: uusi merkkijono, joka lisätään.
Palautustyyppi
- Viittaus str1:een.
Esimerkki
std::string text = 'I like dogs.'; text.replace(7, 4, 'cats'); // Replace 'dogs' with 'cats'>
3. Erase()
Erase()-funktio on std::string-luokan jäsenfunktio, jota käytetään poistamaan merkki tai merkkijonon osa.
Syntaksi
str1 .erase( start, end);>
Parametrit
- aloitus: Lähtöasento. loppu: Loppuasento.
Palautustyyppi
- Viittaus str1:een.
Esimerkki
std::string text = 'This is an example.'; text.erase(5, 3); // Erase 'is '>
Muunna std::string C-merkkijonoksi – c_str)_
Funktio c_str() on jäsenfunktio, jota käytetään muuttamaan C++-tyylimerkkijono eli std::string-objektit C-tyylisiksi merkkijonoksi eli merkkijonoksi.
Syntaksi
str1.c_str()>
Parametrit
- Tämä toiminto ei ota mitään parametreja.
Palautusarvo
- Osoitin vastaavaan merkkijonoon.
Esimerkki
std::string str = 'C++'; const char* cstr = str.c_str()>
Esimerkki merkkijonofunktioista C++:ssa
Alla oleva koodi osoittaa edellä mainittujen merkkijonofunktioiden käytön:
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>> nimi;>> > >// 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;> }> |
>
>
Lähtö
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++>