Warum ist stringstreams RDBUF () und str () gibt mir verschiedene Ausgabe?
-
05-09-2019 - |
Frage
Ich habe diesen Code,
int main()
{
std::string st;
std::stringstream ss;
ss<<"hej hej med dig"<<std::endl;
std::getline(ss,st,' ');
std::cout <<"ss.rdbuf()->str() : " << ss.rdbuf()->str();
std::cout <<"ss.rdbuf() : " << ss.rdbuf();
return 0;
}
Geben Sie mir diese Ausgabe
ss.rdbuf () -> str (): hej hej med dig
ss.rdbuf (): hej med dig
Aber warum ist das so? Ist das wegen ostreams Definition des Operators
Lösung
ss.rdbuf()->str();
Returns Kopie aller Pufferinhalt.
Was tun std::cout << ss.rdbuf();
?
Siehe Beschreibung für
basic_ostream<charT,traits>& operator<<(basic_streambuf<charT,traits>* sb);
Es lesen Zeichen für Zeichen aus dem Puffer und schreibt sie auftritt, bis EOF / Fail auf Schreiben / Ausnahme oStream.
Sie haben bereits ein Wort von Buff lesen. Nun liest es Rest Teil.
Andere Tipps
Ein Zitat aus der Bibel auf C ++ Strom I / O, Langer und Kreft , ruft str () auf einem Strompuffer (dh die Sache durch RDBUF () zurück) „verhält sich in eine extrem eingängig Art und Weise“ (Seite 72 in meiner Ausgabe). Für die ganze Geschichte, werden Sie das Buch lesen müssen.
Wenn Sie nicht eine befriedigende Antwort hier bekommen, versuchen Sie die Usenet-Gruppe: