stringstream C++:ssa ja sen sovelluksissa

Merkkijonovirta yhdistää merkkijonoobjektin virtaan, jolloin voit lukea merkkijonosta ikään kuin se olisi virta (kuten cin). Jotta voisimme käyttää stringstreamia, meidän on sisällytettävä virtaa otsikkotiedosto. Stringstream-luokka on erittäin hyödyllinen syötteen jäsentämisessä.

Perusmenetelmät ovat:

    clear()- Tyhjentääksesi virran. str()- Hakea ja asettaa merkkijonoobjektin, jonka sisältö on virrassa. operaattori < <- Lisää merkkijono merkkijono-objektiin. operaattori>>- Lue jotain merkkijono-objektista.

Esimerkkejä:

1. Laske merkkijonon sanojen määrä

Esimerkkejä:

Syöte: Asipu Pawan Kumar
Lähtö: 3

Syöte: Geeks For Geeks Ide
Lähtö: 4

Alla on C++-ohjelma yllä olevan lähestymistavan toteuttamiseksi -

C++




// C++ program to count words in> // a string using stringstream.> #include> #include> #include> using> namespace> std;> int> countWords(string str)> {> > // Breaking input into word> > // using string stream> > > // Used for breaking words> > stringstream s(str);> > > // To store individual words> > string word;> > int> count = 0;> > while> (s>> sana)> > count++;> > return> count;> }> // Driver code> int> main()> {> > string s => 'geeks for geeks geeks '> > 'contribution placements'> ;> > cout < <> ' Number of words are: '> < < countWords(s);> > return> 0;> }>

Lähtö

 Number of words are: 6 

Aika monimutkaisuus: O(n*log(n)).

Aputila: Päällä).

2. Tulosta yksittäisten sanojen taajuudet merkkijonoon

Esimerkkejä:

Syöte: Geeks for Geeks -visa Geeks -tietokilpailu -harjoittelu
Lähtö: -> 1
Nörtti -> 3
Harjoittelu -> 2
Tietovisa -> 2

Syöte: Sanamerkkijonotaajuusmerkkijono
Lähtö: Taajuus -> 1
merkkijono -> 2
Sana -> 1

Alla on C++-ohjelma yllä olevan lähestymistavan toteuttamiseksi -

C++




// C++ program to demonstrate use> // of stringstream to count> // frequencies of words.> #include> using> namespace> std;> void> printFrequency(string st)> {> > // Each word it mapped to> > // it's frequency> > mapint>FW; // Käytetään sanojen rikkomiseen stringstream ss(st); // Tallentaa yksittäisiä sanoja merkkijono Word; while (ss>> Word) FW[Word]++; varten (auto m : FW) cout < < m.first < < '->' < < m.second < < ' '; } // Driver code int main() { string s = 'Geeks For Geeks Ide'; printFrequency(s); return 0; }>

Lähtö

For->1 nörtti-> 2 idea-> 1>>   

Aika monimutkaisuus: O(n*log(n)).

Aputila: Päällä).

3. Muunna kokonaisluku merkkijonoksi

Siitä lähtien merkkijonovirran lisäys- ja purkuoperaattorit toimivat eri tietotyypeillä. Siksi se toimii hyvin kokonaislukujen kanssa.

Lisäämme kokonaisluvun merkkijonovirtaan ja sen jälkeen, kun se on purettu merkkijonoon, tästä kokonaisluvusta tulee merkkijono.

Koodi-

C++




// C++ program to demonstrate the> // use of a stringstream to> // convert int to string> #include> #include> using> namespace> std;> // Driver code> int> main()> {> > int> val=123;> > // object from the class stringstream> > stringstream geek;> > // inserting integer val in geek stream> > geek < < val;> > // The object has the value 123> > // and stream it to the string x> > string x;> > geek>> x;> > // Now the string x holds the> > // value 123> > cout <'4' < return 0; }>

Lähtö

1234 

Aika monimutkaisuus: O(n) ,n on kokonaisluvun pituus

Aputila: O(n)

Välilyöntien poistaminen merkkijonosta Stringstreamin avulla
Merkkijonojen muuntaminen numeroiksi C/C++:ssa