#cpp
У меня есть класс Console, который формирует строку и выводит ее на экран (Имеется
ввиду не DOS консоль, а своя собственная в окне приложения).
Чтобы вывести на нее информацию, приходится писать так:
std::ostringstream os;
os << "value X = " << x;
console.print(os.str());
Каждый раз так писать очень неудобно, хочется использовать класс так же, как и при
работе со стандартными потоками ввода/вывода, примерно так:
console << "value X = " << x;
//или через функцию метод
conslole.get() << "value X = " x;
Есть способ реализовать такое? Желательно без сторонних библиотек
Ответы
Ответ 1
Если вы хотите, чтобы ваш класс выглядел как ostream, то всё, что вам нужно сделать - перегрузить оператор <<: class Console { private: std::ostringstream os; public: templateConsole &operator<<(const T &x) { os << ':' << x << ':'; return *this; } std::string to_string() const { return os.str(); } }; Источник Теперь вы можете использовать вашу консоль как поток вывода: Console con; con << "abc" << 123; Если же вам нужно, чтобы ваш класс являлся потоком вывода, придётся наследоваться от базовых классов потоков вывода и переопределять их методы.
Комментариев нет:
Отправить комментарий