В потоковых классах форматирование данных можно осуществить тремя способами, а именно, с помощью:
Форматирование данных с помощью флагов.
Таблица 1    
ФлагиПоложениеУмолчаниеОписание действий при установленном бите
skipws0x0001+при извлечении пробельные символы игнорируются
test0x0002 выравнивание по левому краю
right0x0004+выравнивание по правому краю
internal0x0008 знак числа выводится по левому краю, а число по правому. Промежуток заполняется символами Х (по умолчанию – пробелами)
dec0x0010+десятичная система счисления
oct0x0020 восьмеричная
hex0x0040 шестнадцатеричная
showbase0x0080 вывод основания системы счисления: – шестнадцатеричная 0 – восьмеричная
showpoint0x0100 при выводе вещественных чисел печатает десятичную точку и дробную часть
uppercase0x0200 при выводе использует символы верхнего регистра
showpos0x0400 печатает знак при выводе положительных чисел
scientific0x0800 печатает веществ числа в форме мантиссы с порядком
fixed0x1000 печатает вещественные числа в форме с фиксированной точкой, точность определяется полем precision
unitouf0x2000 выгружает буферы всех потоков после каждого вывода
stdio0x4000 выгружает буферы из потоков stdout и stderr после каждого вывода

Флаги
1) left, right, internal
2) dec, oct, hex
3) scientific, fixed
взаимно исключают друг друга, то есть в каждый момент времени может быть установлен только один флаг из каждой группы.
Для управления флагами в классе ios есть методы: flags, setf, unsetf.
longios::flags(); - возвращает текущие флаги потока
longios::flags(long); - присваивает флагам значения параметров
longios::setf(long long); - присваивает флагам, биты которых в первом параметре, соответствующие значения во втором
longios::setf(long); - устанавливает флаги, биты которых установлены в параметре
longios::unsetf(long); - сбрасывает флаги, биты которых установлены в параметрах

Кроме флагов для форматирования используются следующие поля классов ios:
- int x_width – минимальная ширина поля ввода
- int x_precision – количество цифр в дробной части при выводе вещественных чисел с фиксированной точкой, либо общее количество значащих цифр при выводе числа с мантиссой и порядком
- int x_fill – символ заполнения поля ввода.
Для управления этими полями, используются методы width, precision, fill.
int ios:: width()
возвращает значение ширины поля ввода
int ios:: width(int)
устанавливает значение ширины поля ввода в соответствии с параметром
int ios:: precision()
возвращает значение точности представления при выводе вещественного числа
int ios:: precision(int)
устанавливает значение точности представления при выводе вещественного числа и возвращает старое значение точности
char fill()
возвращает текущий символ заполнения
char fill(char)
устанавливает значение текущего символа заполнения и возвращает старое значение символа
Перед установкой некоторых флагов требуется сбросить флаги, которые не могут быть установлены одновременно с ними. Для этого удобно воспользоваться вторым параметром метода setf.
adjustfield(left| right| internal);
basefield(dec |oct | hex );
floatfield(scientific | fixed );
Пример 1
Пример форматирования при выводе с помощью флагов и методов:

#include<iostream.h>
int main()
{
long a = 1000, b = 077;
cout.width(7);
cout self(ios::hex| ios::showbase| ios::uppercase);
cout << a;
cout width(7);
cout<< b << endl;
double d=0.12, c=1.3*d-4;
cout self(ios::left);
cout << d << endl;
cout << c;
return 0;
}