c++ - stringstream odd behavior after string with one word -
this question has answer here:
- how clear stringstream? [duplicate] 1 answer
 
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
Post a Comment