Манипуляторы — не просто функции. Они изменяют внутренние флаги потока.
💡 Под капотом — состояние
std::ostream хранит std::ios_base::fmtflags:std::cout << std::hex << 255; // ff
std::cout << 10; // a (всё ещё hex!)
⚡️ Флаги остаются:
std::cout.setf(std::ios::hex, std::ios::basefield);
// Эквивалентно std::hex
💡 Сохранение состояния:
std::cout << std::hex << 255;
// Или
std::ios oldState(nullptr);
oldState.copyfmt(std::cout);
// ... вывод ...
std::cout.copyfmt(oldState); // Восстановление
❗️Манипуляторы — это состояние. Не забывай сбрасывать флаги в коде.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом