Как написать определяемые пользователем манипуляторы для потоковой передачи самописного класса

Как мне написать определяемые пользователем манипуляторы потоков на C ++, которые управляют форматом потоковой передачи самописного класса?

В частности, как бы Я пишу простые манипуляторы подробный и краткий для управления объемом передаваемого вывода?

Моя среда - GCC, версии 4. 5.1 и выше.

Пример:

class A
{
 ...
};

A a;

// definition of manipulators verbose and terse

cout << verbose << a << endl; // outputs a verbosely
cout << terse << a << endl; // outputs a tersely

PS: То, что следует ниже, является лишь второстепенным вопросом, не стесняйтесь его игнорировать: Можно ли переносимо распространить это на манипуляторов, принимающих аргументы? Йосаттис пишет в «Стандартной библиотеке C ++» в конце раздела 13.6.1, что написание манипуляторов, принимающих аргумент, зависит от реализации. Это все еще правда?

8
задан Peter G. 28 April 2011 в 21:05
поделиться