Значение и общие флаги
Результат в консоли
Измените любой параметр — вывод обновится.
setw(12)
setprecision(4)
setfill('*')
right
dec
Эквивалентный код на C++
main.cpp
Манипулятор
setw действует только на один следующий вывод —
если нужно выровнять несколько строк, вызывайте его перед каждой.
Остальные манипуляторы (setprecision, setfill, fixed и др.)
сохраняют своё действие до изменения.
Справочник по манипуляторам
| Манипулятор | Действие | Сбрасывается |
|---|---|---|
setw(n) | Ширина поля вывода | После одного вывода |
setprecision(n) | Число значащих цифр или цифр после точки (при fixed) | Только новым вызовом |
setfill(c) | Символ-заполнитель | Только новым вызовом |
left / right | Выравнивание | Только новым вызовом |
fixed / scientific | Формат вещественного числа | Только новым вызовом |
hex / oct / dec | Система счисления | Только новым вызовом |
showpos | Показывать «+» у положительных | Только noshowpos |
showbase | Префикс системы счисления (0x, 0) | Только noshowbase |
uppercase | Заглавные буквы в hex | Только nouppercase |
boolalpha | true/false вместо 1/0 | Только noboolalpha |
Форматирование через printf
Спецификации printf
printf("%-10s|%5d|%8.2f\n", "abc", 42, 3.14159);
// Результат (левый край для строки, целое, вещественное с 2 знаками):
// abc | 42| 3.14
Различие подходов.
printf задаёт формат в одном месте —
и не запоминает его между вызовами. Манипуляторы iostream действуют
до тех пор, пока не сброшены — это удобно при однотипном выводе таблиц, но
легко забыть вернуть «нормальный» формат перед следующим выводом.
Задание
- Сделайте таблицу из 5 строк с шириной поля 15, выравниванием по левому краю и заполнителем «.».
- Настройте вывод вещественного числа так, чтобы всегда показывалось ровно 3 знака после точки.
- Выведите число 255 одновременно в десятичной, восьмеричной и шестнадцатеричной системах. Используйте
showbaseиuppercase. - Объясните, почему
setwнужно вызывать перед каждым выводом, аsetfill— нет. - Сравните вывод одного и того же числа через
coutиprintf. Какой подход удобнее в вашей задаче?