Особенности форматирования
Основнаяособенность:методы форматированиявлияюттолькона ближайшуюоперациюспотоком. Послееёвыполненияформатирование сбрасываетсянаформатированиепо умолчанию.
Форматпоумолчанию соответствует%g
Частичноисправленныйпример
cout.width(7);
cout.precision(3); cout << 1.5; cout.width(7); cout.precision(3); cout << 2.5 << "\n";
Результат:
1.5 2.5
Гденезначащие нули?
Поумолчаниювыводнезначащих нулейотключен.Чтобыони отображались,требуетсявключить fixedрежимдлявыводавещественных значений.
Включениеfixed режимавозможно толькоспомощьюфлаговили манипуляторов.
Основныефлаги потоковвводавывода
ios::skipws
пропускпредшествующих пробелов привводе
ios::left
выводс левым выравниванием
ios::right
выводс правым выравниванием
ios::internal
знакчисла выводится слевого края,число – с правого
Основныефлаги потоковвводавывода
ios::dec
десятичноепреобразование
ios::oct
восьмеричноепреобразование
ios::hex
шестнадцатиричноепреобразование
ios::showbase
показатьуказательсистемысчисления
Основныефлаги потоковвводавывода
ios::showpoint
показатьпозициюдесятичной точки(навыходе)
ios::uppercase
выводшестнадцатиричных значений буквами верхнегорегистра
ios::showpos
показатьзнак"+"для положительных чисел
ios::scientific
использовать запись чисел с выводом экспоненты Е
Основныефлаги потоковвводавывода
ios::fixed
использоватьзаписьчиселс фиксированнойпозициейдесятичной точки
ios::unitbuf
сбросвсехпотоков послевставки
ios::stdio
сбросstdout иstderr послевставки
Работасфлагами
//Устанавливает флаги,
//биты которых заданы в параметре; long ios::setf(long);
//снимает флаги
long ios::unsetf(long);
//Читает все флаги long ios::flags()
// Устанавливает все флаги long ios::flags(long);
Установитьсразунесколько флаговможноиспользуя поразрядныеоперации.
Установка флагов влияет на ВСЕ последующие операции!
Примериспользования флагов
int x=1678;
float f=2.3456e6;
//Сохранить значения флагов long savedFlags=cout.flags();
//Установить основание 16 с индикацией cout.setf(ios::hex | ios::showbase); cout << "Значение x=" << x << '\n';
//Выводить знак + для положительных значений cout.setf(ios::showpos);
cout << "Значение f=" << f << '\n';
//Восстановить значения флагов cout.flags(savedFlags);