Il est une méthode bien connue pour copier un flux dans un autre en utilisant rdbuf
:flux de copie avec rdbuf échoue sur l'entrée vide
#include <iostream>
#include <fstream>
int main()
{
std::ifstream in{"/tmp/foo.txt"};
std::cerr << in.rdbuf();
std::cerr << "Done\n";
}
Cependant, cette pause (= définit le mauvais bit) mon cerr
quand /tmp/foo.txt
est vide . Par conséquent, Done\n
n'est pas affiché.
Pourquoi? Observé avec G ++/libstdC++/GNU Linux et Clang ++/libC++/OS X.
Totalement inefficace en effet :) Quelqu'un pourrait-il savoir pourquoi la norme est de cette façon? – akim
Ugh, c'était un bug dans cppreference, il définit failbit ([ostream.inserters]/9, ou/8 plus tôt). Le résultat est le même pour OP cependant. – Cubbi
@Cubbi Oh, merci pour la correction. Je vois que vous l'avez fixé là; J'ai modifié ma réponse. La paresse de ma part ne va pas au texte standard. –