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

War es hilfreich?

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:

http://groups.google.com/group/comp.lang.c++.moderated

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top