Sono rimasto sorpreso di vedere il mio programma improvvisamente andare tranquillo quando ho aggiunto un cout ad un certo punto, così ho isolato il codice responsabile:stringstream.rdbuf causando cout a fallire
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;
Il programma si chiude tranquillamente senza la finale cout. Cosa sta succedendo? Se cambio l'ultimo .rdbuf()
a .str()
, allora è completo.
Ok, quindi in realtà non abortire quindi, ho aggiornato la mia domanda per essere più intelligente. –
In alternativa, si può 'if (data.rdbuf() -> in_avail()) std :: cout << data.rdbuf();', quindi si salva uno std :: string temporaneo. Non sono sicuro che a qualcuno dovrebbe interessarsene. E grazie per entrambe le domande e le risposte! Ho salvato la mia giornata. – wessel