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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top