Результаты
1.1
1.17
Значение x=0x68e
Значение f=+2345600
Исправимпредыдущийпример
cout.width(7);
cout.precision(3);
cout.setf(ios::fixed); cout << 1.5; cout.width(7); cout.precision(3); cout << 2.5 << "\n";
Результаты
1.500 2.500
Теперьвсё работает, каки требовалось.
Основнойнедостаток: для вывода двухчисел взаданномформате приходится дополнительно сделать 5 вызововметодов.
Возможноерешение проблемы: использование манипуляторов.
Манипуляторы потоков
Манипулятор потока - это функция, которую можновызвать непосредственно в цепочке операций извлечения данных из потока или вывода данныхв поток.
Манипуляторы разделяются на двегруппы:
простыеманипуляторы;
параметризованные манипуляторы.
Простыеманипуляторы
dec
Установка флага форматирования с десятичными преобразованиями hex
Установка флага форматирования с шестнадцатиричными преобразованиями oct
Установка флага форматирования с восьмеричными преобразованиями ws
Извлечение пробельных символов
Простыеманипуляторы
endl
Вставка символа новой строки и очистка потока
ends
Вставкаоконечного пустого символа встроку
flush
сбросostream
Параметризованные
манипуляторы
setbase(int)
Установка системы счисления при преобразованиях соснованием n (0, 8,10 или 16). 0- десятичная система.
resetiosflags(long)
Очистка форматных битов, заданных аргументом
setiosflags(long)
Установка форматных битов, заданных аргументом
Параметризованные
манипуляторы
setfill(int)
Установка символа-заполнителя вn
setprecision(int)
Установка точности представления чисел с плавающей точкой равнойn разрядам
setw(int)
Установка ширины поля в значениеn