logo

stringstream en C++ i les seves aplicacions

Un stringstream associa un objecte string amb un stream que us permet llegir de la cadena com si fos un stream (com cin). Per utilitzar stringstream, hem d'incloure sstream fitxer de capçalera. La classe stringstream és extremadament útil per analitzar l'entrada.

Els mètodes bàsics són:



    clear()- Per esborrar el flux. str()- Per obtenir i establir un objecte de cadena el contingut del qual està present al flux. operador <<- Afegeix una cadena a l'objecte stringstream. operador>>- Llegir alguna cosa de l'objecte stringstream.

Exemples:

1. Compta el nombre de paraules d'una cadena

Exemples:



Entrada: Asipu Pawan Kumar
Sortida: 3

Entrada: Geeks For Geeks Ide
Sortida: 4

A continuació es mostra el programa C++ per implementar l'enfocament anterior:



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>> paraula)> >count++;> >return> count;> }> // Driver code> int> main()> {> >string s =>'geeks for geeks geeks '> >'contribution placements'>;> >cout <<>' Number of words are: '> << countWords(s);> >return> 0;> }>

>

>

Sortida

 Number of words are: 6>

Complexitat temporal: O(n*log(n)).

Espai auxiliar: O(n).

2. Imprimeix les freqüències de paraules individuals en una cadena

Exemples:

Entrada: Geeks For Geeks Quiz Geeks Quiz Pràctica pràctica
Sortida: Per a -> 1
Geeks -> 3
Pràctica -> 2
Test -> 2

Entrada: Cadena de paraules Cadena de freqüència
Sortida: Freqüència -> 1
Cadena -> 2
Paraula -> 1

A continuació es mostra el programa C++ per implementar l'enfocament anterior:

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; // S'utilitza per trencar paraules stringstream ss(st); // Per emmagatzemar paraules individuals cadena Word; mentre (ss>> Paraula) FW[Paraula]++; per (auto m : FW) cout<< m.first << '->'<< m.second << ' '; } // Driver code int main() { string s = 'Geeks For Geeks Ide'; printFrequency(s); return 0; }>

>

>

Sortida

For->1 Geeks-> 2 Ide-> 1>>> 

Complexitat temporal: O(n*log(n)).

Espai auxiliar: O(n).

3. Converteix Enter a cadena

Atès que, els operadors d'inserció i extracció del flux de cadena funcionen amb diferents tipus de dades. Per això funciona bé amb nombres enters.

Inserirem un nombre enter al flux de cadena i després d'extreure-lo en una cadena, aquest valor sencer es convertirà en una cadena.

codi-

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

>

Sortida

algorisme k-nn
1234>

Complexitat temporal: O(n) ,n és la longitud de l'enter

Espai auxiliar: O(n)

Eliminació d'espais d'una cadena mitjançant Stringstream
Conversió de cadenes a números en C/C++