logo

Merkkijonofunktiot C++:ssa

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.

liitä()

Append()-funktio lisää yhden merkkijonon toisen loppuun.

4.

Merkkijonojen vertailu

== Operaattori

Voit verrata merkkijonoja ==-operaattorilla.

vertailla()

Vertaa()-funktio palauttaa kokonaisluvun, joka ilmaisee vertailun tuloksen.

5.

Alimerkkijonot

substr()

Käytä substr()-funktiota poimimaan osamerkkijono merkkijonosta.

6.

Etsitään

löytö()

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

>

>

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++>