Question

J'ai eu plusieurs questions sur la question des cours d'eau et d'autres choses, mais après avoir réfléchi un peu, je suis venu à la conclusion que tout ce que je besoin est un type de chasse d'eau sur mesure. Je veux que mon flux de rinçage quand il obtient une nouvelle ligne. Il évite d'avoir à taper std :: endl. Est-il possible de mettre en œuvre ce? J'utilise un ostream avec un StringBuffer personnalisé.

Était-ce utile?

La solution

Je crois que tout cela prendrait est primordial ostream::put(char), mais ne me citez pas que:

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;
}

Vous pourriez avoir à remplacer toutes les méthodes et la fonction qui prend un caractère ou d'une séquence de caractères qui est défini dans la STL. Ils seraient tous faire essentiellement la même chose:. Appeler la méthode / fonction définie sur la super classe, vérifier si une nouvelle ligne vient d'être imprimé et flush si oui

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top