Манипуляторы hex
, dec
и oct
просто изменяют свойство basefield
существующего stream
.
См. Справочник по C ++ для более удаленных об этих манипуляторах.
Как указано в ответе Neil Butterworth , вам нужно расширить существующие классы потоков или создать свои собственные, чтобы иметь манипуляторы, которые влияют на будущие значения, вставленные в поток.
В примере вашего манипулятора plusone
объект потока должен иметь внутренний флаг, указывающий, что его нужно добавить ко всем вставленным значениям. Манифест plusone
просто установил бы этот флаг, а код для обработки вставки потока проверил бы этот флаг перед вставкой чисел.