Управление потоками ввода/вывода в С++
Содержание
Флаги
С помощью механизма флагов можно управлять параметрами вывода данных на консоль. Устанавливается значение флага через метод setf, а снимается с помощью unsetf.
Пример. Выравнивание по правой границе поля заданной ширины
int a=10; cout.setf(ios::right); cout.width(20); cout<<a<<endl;
Пример. Вывод логических величин в текстовом виде
bool a=true; cout<<a<<endl; cout.setf(ios::boolalpha); cout<<a<<endl;
Основные флаги, используемые при форматировании приведены в следующей таблице:
| Флаг | Значение |
|---|---|
| left | левое выравнивание |
| right | правое выравнивание |
| boolalpha | вывод логических значений в текстовом виде |
| dec | основание системы счисления 10 |
| oct | основание системы счисления 8 |
| hex | основание системы счисления 16 |
| showbase | выводить индикатор системы счисления |
| showpos | показывать + для положительных чисел |
| scientific | экспонециальная форма вещественного числа |
| fixed | фиксированная форма вещественного числа |
Манипуляторы
Помимо флагов, изменяющих состояние потока можно использовать манипуляторы. Идея манипуляторов состоит в том, что их можно помещать в поток вместе с данными. Многие манипуляторы повторяют названиями флаги.
Для работы с манипуляторами нужно подключить заголовочный файл iomanip.
| Манипулятор | Значение |
|---|---|
| setw() | установить ширину поля |
| setprecision() | количество цифр в дробной части |
| left | выравнивание по левой границе |
| right | выравнивание по правой границе |
| boolalpha | вывод логических значений в текстовом виде |
| nobool alpha | вывод логических значений в числовом виде |
| dec | десятичная система счисления |
| oct | восьмеричная система счисления |
| hex | шестнадцатиричная система счисления |
| showbase | показывать признак системы счисления |
| noshowbase | не показывать признак системы счисления |
| showpos | выводить + для положительных чисел |
| noshowpos | не выводить + для положительных чисел |
| sceintific | экспоненциальная форма для вещественных чисел |
| fixed | фиксированная форма |
| setfill() | установить символ заполнитель пустых элементов поля |