Пользовательский тип резкого типа
Вопрос
У меня были несколько вопросов по вопросу потоков и прочее, но после немного мысли, я пришел к выводу, что все, что мне нужно, это пользовательский тип промывания. Я хочу, чтобы мой поток вспомогал, когда получает новую строку. Это экономит, чтобы набрать std :: endl. Можно ли это реализовать это? Я использую Ostream с пользовательским stringbuf.
Решение
Я верю, что все это примет, является переопределением ostream::put(char)
, но не процитируйте меня на этом:
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;
}
Возможно, вам придется переопределить каждый метод и функцию, которая принимает символ или последовательность символов, которые определены в STL. Все они в основном сделают то же самое: вызовите метод / функцию, определенные на супер классе, проверьте, была ли напечатана ли новая линия и промойте, если так.