Как мне написать определяемые пользователем манипуляторы потоков на 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, что написание манипуляторов, принимающих аргумент, зависит от реализации. Это все еще правда?