Вот чего не использовал, так это unsetf(dec)... Конечно, если постараться, я могу придумать ситуацию, когда оно нужно.
Но мне проще при необходимости явно послать нужную базу (dec, hex, oct), чем setf(dec), вывод, unsetf(dec).
Тем, что есть, unsetf(dec) не сделать, так как посылка cout << dec эквивалентна
setf(ios_base::dec, ios_base::basefield). Т.е. после этого уже нет смысла в unsetf.
Но если вместо посылки dec посілать самописный нижеприведенный setdec, то всё нормально

Код: Выделить всё
inline ios_base& setdec(ios_base& __base)
{
__base.setf(ios_base::dec);
return __base;
}
inline ios_base& unsetdec(ios_base& __base)
{
__base.unsetf(ios_base::dec);
return __base;
}
cout << hex << 0xDE << " send setdec " << setdec << 0xDE << " send unsetdec " << unsetdec << 0xDE << endl;
Просто это дело сразу имеет
operator << и
operator >> для функций, принимающих и возвращающих базу io. Работа операторов состоит в вызове данной функции применительно к потоку, в которую её «вывели» (или из которого её «ввели»).
Через эти операторы работает часть манипуляторов и можна написать свои как указано выше.
p.s. а всякие showbase/showpoint сразу имеют парные noshowbase/noshowpoint
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.