La mia domanda:
Quando hai un convertitore complesso come, che prende blocchi o set di risultati di grandi dimensioni da un database, alla fine lo converte in un file riga / risorsa, nel caso uno lo disegni come std::basic_streambuf o è un std::basic_istream o qualcosa di diverso, usando C ++ ?!
Per meglio descriverlo guarda il diagramma qui sotto o usa questo flusso di dati di testo:
A(ODB) -[maybe many rows]-> COSTLY CONVERSION -[many text lines]-> ???? --> std::istream
???? --> std::ofstream
???? --> std::ostream
Nota: il volume dei dati potrebbe essere ampio, da MB fino a GB, quindi i dati potrebbero essere convertiti in blocchi e pigri dal database, il che porterà a un blocco di righe di testo.
Il mio approccio assunto al momento per ???? era std::basic_streambuf
La mia ipotesi:
AFAIK il modo previsto di inserire dati da una fonte std::istream in un altro std::ostream sink, come std::ofstream è di usare solo <<operator con l'argomento% std::streambuf , come
sink << source.rdbuf();
Sfondo
Sto progettando un modulo convertitore C ++, che prende dati personalizzati (cioè dati di misura), in questo esempio da un database mddb tramite la libreria C ++ odb , lo converte in un altro formato, chiamato df qui, e ora arriva la parte importante: rende disponibili i dati convertiti per almeno un std::istream e anche un std::fstream . Questo perché, il std::istream può essere utilizzato per un download HTTP tramite l'interfaccia Wt Wt::WStreamRessource e ovviamente il flusso del file, per memorizzare semplicemente i dati come file.