c++ - stringstream odd behavior after string with one word -


this question has answer here:

i have code example:

#include <iostream> #include <sstream>  using namespace std; int main(){     stringstream ss;     string buffer,first_word;     int i;     for(i = 0; < 4; i++){         getline(cin,buffer);    // getting line         ss.str(buffer);         // initializing stream         ss>>first_word;         cout<<first_word<<endl;         ss.str(string());       // cleaning stream     }     return 0; } 

with input:

line 1 spaces line 2 spaces alone line 4 spaces 

the output expect first words of lines, this:

line line alone line 

but getting this:

line line alone alone 

so, stringstream not updating after getting line has 1 word.

please explain me, don't want right answer code, want know why.

thank you.

if bothered check state of stream, see line:

    ss>>first_word;     if (!ss.good()) std::cout << "problem." << std::endl;     cout<<first_word<<endl; 

does indeed output "problem."

    ss.str("");     ss.clear(); 

fixes problem.


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -