Ich war überrascht, mein Programm plötzlich ruhig gehen, um zu sehen, wenn ich einen cout an einem gewissen Punkt hinzugefügt, so isolierte ich den verantwortlichen Code:stringstream.rdbuf verursacht cout zu scheitern
std::stringstream data;
data<<"Hello World\n";
std:std::fstream file{"hello.txt", std::fstream::out};
file<<data.rdbuf();
std::cout<<"now rdbuf..."<<std::endl;
std::cout<<data.rdbuf()<<std::endl;
std::cout<<"rdbuf done."<< std::endl;
Das Programm leise beendet, ohne die endgültigen cout. Was ist los? Wenn ich stattdessen die letzte .rdbuf()
zu .str()
ändere, dann wird es abgeschlossen.
Ok also es bricht dann eigentlich nicht ab, ich habe meine Frage aktualisiert um schlauer zu werden. –
Alternativ können Sie 'if (data.rdbuf() -> in_avail()) std :: cout << data.rdbuf();', so dass Sie eine temporäre std :: string speichern. Nicht sicher, dass sich jemand darum kümmern sollte. Und danke für die Frage und die Antwort! Habe meinen Tag gerettet. – wessel