I have an stringstream, pushing to it in an iteration. After casting its content to an int object, it never changes after that. I think it changes but instance.str() is pointing to an invalidated place in which the string is not there anymore.
bool h = 1;
stringstream ss;
for(int i = 0; i < input.length(); i++)
{
if(input[i] != ':')
{
cout << "input: " << input[i] << endl;
ss << input[i];
cout << "ss: " << ss.str() << endl;
}
else
if(h)
{
ss >> hour;
ss.str(string());
h = 0;
}
}
in this loop, after the satisfaction of the condition( h being true), the stream's content is casting to an int. till this moment everything works fine but after this moment, ss.str() returns an empty string.
was my guess about invalidated string pointer right? if yes, what is the reason? if no, what is the reason of this behavior?
UPDATE: I changed the sources code because the previous version was the way I handled the issue by this trick:
stringstream a(ss.str());
a >> hour;
ss.str(string());