Je pensais "enchaîner" deux iostreams C++ ensemble pour filtrer l'entrée deux fois. J'utilise gzstreams pour lire les fichiers compressés en zlib et je pensais coder un flux qui lit à partir d'un flux et effectue des conversions d'encodage. Peut-être en passant un flux ouvert comme paramètre constructeur ... Comment pensez-vous que cela pourrait être mieux accompli?chaînage des flux C++
2
A
Répondre
6
Je ne l'ai pas utilisé mais filtering_stream peut aider.
À titre d'exemple, j'ai trouvé a mailing list post avec indent.hpp, qui met en oeuvre un filtre de sortie qui indente sorties:
boost::iostreams::filtering_ostream out;
indent_filter::push(out,2);
out.push(std::cout);
et de l'utiliser comme ceci:
out << "Hello Filter!\n"
<< indent_in
<< "this is\n"
<< "indented\n"
<< indent_out
<< "until here\n"
;
qui résultat en sortie:
Hello Filter!
this is
indented
until here
Qu'entendez-vous par "chaînage"? –
Comme eed3si9n posté, un peu comme boost :: filtre iostreams. Mais je me demandais si ce serait une bonne conception de le faire soi-même en passant un flux précédemment ouvert à votre constructeur de classe personnalisé dérivé du public std :: streambuf ou avec une autre approche. – piotr