Witam, mam problem ze strumieniami stringstream, które nie zachowują się tak, jak powinny (według książek i przykładów z internetu). Korzystam z Visual Studio 2015. Weźmy taki przykład:
string zmienna;
stringstream ss;
ss << "Napis";
cout << ss.str() << endl; // 1 Wypisze: Napis
ss >> zmienna;
cout << ss.str() << endl; // 2 Wypisze: Napis (!)
Wprowadzam do strumienia dane i wypisanie zawartości strumienia pokazuje, że rzeczywiście znajduje się tam "Napis". Jednak dziwne rzeczy dzieją się po wyprowadzeniu danych ze strumienia i zapisania ich do zmiennej.
Zmienna odczytuje dane, a strumień przesuwa wskaźnik odczytu dalej. Z tego co mi się wydaje, to zachowanie powinno być zupełnie inne. Strumień powinien wyrzucić dane zaraz po wykonaniu:
ss >> zmienna;
Tak pokazują m.in. przykłady z książki Symfonia. Po odczytaniu wszystkiego, wywołanie ss.str(); zwracało pusty string i tak samo powinno być w punkcie 2. Czy tylko biblioteki z Visual Studio mają takie anomalie? Zmieniono specyfikację tych strumieni, czy może ja coś źle robię?