| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Использование параметризирующих манипуляторов |
| Автор: EnergoHokum 14.5.2010, 06:48 | ||
| В самодельный класс инкапсулирован std::stringstream. Хочется, чтобы к данному классу можно было применять все манипуляторы. Но вот с параметризующими манипуляторами (std::setioflags, std::setbase, std::setfill, std::setprecision, std::setw) у меня выходит непонимание. Как пример: std::setw вот http://cplusplus.com/reference/iostream/manipulators/setw/ имеет возвращаемый параметр smanip. Покопавшись в исходниках iostream выяснил, что это -- вообще структура с произвольным именем (у GCC своё, у MSVS своё). Как организовать передачу таких манипуляторов std::stringstream-у? Сам класс выглядит наподобие
|
| Автор: GoldFinch 14.5.2010, 08:15 |
| EnergoHokum, посмотрите как сделан ostream --------- фразу про typedef не понял %) там шаблон надо применять, т.к. там не указатель на функцию, а функтор |
| Автор: EnergoHokum 14.5.2010, 08:49 | ||||||
То есть, классу надо приделать 6 функций, каждая под отдельный манипулятор? В <iomanip> GCC, по крайней мере, это выглядит так.
Отчего же функтор? И std::showpos (например), и std::setfill -- функции. Только манипуляторы базовыми флагами формата принимают и возвращают вполне себе ссылки на потоки ввода-вывода, а у параметризующих манипуляторов возвращаемое значение -- unspecified. |