Personalizzata tipo di flusso a livello
Domanda
Ho avuto più domande in materia di corsi d'acqua e roba, ma dopo averci pensato per un po ', sono venuto alla conclusione che tutte le necessità che è un tipo a livello personalizzato. Voglio che il mio flusso di filo quando si fa una nuova linea. Si evita di dover digitare le std :: endl. E 'possibile implementare questo? Sto usando un ostream con uno stringbuf personalizzato.
Soluzione
Io credo che tutti ci vorrebbe è prevalente ostream::put(char)
, ma non citare me su questo:
template <typename Ch>
class autoflush_ostream : public basic_ostream<Ch> {
public:
typedef basic_ostream<Ch> Base;
autoflush_ostream& put(Ch c);
};
template <typename Ch>
autoflush_ostream<Ch>& autoflush_ostream<Ch>::put(Ch c) {
Base::put(c);
if (c == "\n") {
flush();
}
return *this;
}
Potrebbe essere necessario eseguire l'override ogni metodo e funzione che prende un carattere o una sequenza di caratteri che è definito nel STL. Avrebbero tutti fondamentalmente la stessa cosa:. Chiamare il metodo / funzione definita sulla classe super, controllo se il ritorno a capo è stato appena stampato e in caso affermativo a filo