ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 14.05.2021
Просмотров: 183
Скачиваний: 1
C++. Форматированный ввод-вывод
В этом
уроке мы вернемся к используемым ранее
операторам cin и cout
для рассмотрения их в организации
форматированного ввода-вывода. Для
управления вводом-выводом в C++
используются
:
-
флаги форматированного ввода-вывода;
-
манипуляторы форматирования.
Флаги позволяют установить параметры ввода-вывода, которые будут действовать во всех последующих операторах ввода-вывода до тех пор, пока не будут отменены. Манипуляторы вставляются в операторы cin(cout) и устанавливают параметры текущего оператора ввода-вывода.
Использование флагов
Флаги позволяют включить или выключить один из параметров вывода на экран. Для установки флага вывода используется следующая конструкция языка C++:
cout.setf(ios::flag)
Для снятия флага конструкция:
cout.unsetf(ios::flag)
Здесь flag — имя конкретного флага.
Если при выводе необходимо установить несколько флагов, то можно воспользоваться арифметической операцией «или» (|). В этом случае конструкция языка C++ будет такой:
cout.setf(ios::flag1 | ios::flag2 | ios::flag3)
В данном случае flag1, flag2, flag3 — имена устанавливаемых флагов вывода. В таблице ниже приведены некоторые флаги форматного вывода с примерами их использования.
|
Флаг |
Описание |
Пример использования |
Результат |
|
right |
Выравнивание по правой границе |
int
r=-25; |
r=-25 |
|
left |
Выравнивание по левой границе (по умолчанию) |
double
r=-25.45; |
r=-25.45 |
|
boolalpha |
Вывод логических величин в текстовом виде |
bool
a=true; |
1 |
|
dec |
Вывод величин в десятичной системе счисления (по умолчанию) |
int
r=-25; |
r=-25 |
|
oct |
Вывод величин в восьмеричной системе счисления (для этого нужно снять флаг вывод в десятичной) |
int
p=23; |
p=27 |
|
hex |
Вывод величин в шестнадцатеричной системе счисления (для этого нужно снять флаг вывод в десятичной) |
int
p=23; |
p=17 |
|
showbase |
Выводить индикатор основания системы счисления |
int
r=-25; |
p=0×17 |
|
uppercase |
Использовать прописные буквы в шестнадцатеричных цифрах |
int
p=29; |
p=1D |
|
showpos |
Выводить знак + для положительных чисел |
int
p=29; |
p=+29 |
|
scientific |
Экспоненциальная форма вывода вещественных чисел |
double
p=146.673; |
p=1.466730e+002 |
|
fixed |
Фиксированная форма вывода вещественных чисел (по умолчанию) |
double
p=146.673; |
p=146.673 |
Флаги удобно использовать в тех случаях, когда следует изменить параметры всех последующих операторов ввода-вывода. Использование большего количества флагов для управления одним оператором ввода-вывода не совсем удобно. Еще одним способом форматирования является использование манипуляторов непосредственно в операторах cin и cout.
Использование манипуляторов форматирования
Манипуляторы встраиваются непосредственно в операторы ввода-вывода. С одним из них (endl) вы уже знакомы. В таблице ниже приведены основные манипуляторы форматирования с примерами. Для корректного их использования необходимо подключить библиотеку iomanip с помощью оператора #include <iomanip>
|
Манипулятор |
Описание |
Пример использования |
Результат |
|
setw(n) |
Определяет ширину поля вывода в n символов |
int
r=-253; |
r=253 |
|
setprecision(n) |
Определяет количество цифр (n-1) в дробной части числа |
double
p=1234.6578; |
p=1234.658 |
|
left |
Выравнивание по левой границе (по умолчанию) |
int
r=-25; |
r=-25 |
|
right |
Выравнивание по правой границе |
int
r=-25; |
r=-25 |
|
boolalpha |
Вывод логических величин в текстовом виде |
bool
a=true; |
true |
|
noboolalpha |
Вывод логических величин в числовом виде |
bool
a=true; |
1 |
|
dec |
Вывод величин в десятичной системе счисления (по умолчанию) |
int
r=0253; |
r=171 |
|
oct |
Вывод величин в восьмеричной системе счисления (для этого нужно снять флаг вывод в десятичной) |
int
r=253; |
r=375 |
|
hex |
Вывод величин в шестнадцатеричной системе счисления (для этого нужно снять флаг вывод в десятичной) |
int
r=253; |
r=fd |
|
showbase |
Выводить индикатор основания системы счисления |
int
p=253; |
p=0XFD |
|
noshowbase |
Не выводить индикатор основания системы счисления |
int
p=253; |
p=FD |
|
uppercase |
Использовать прописные буквы в шестнадцатеричных цифрах |
int
p=253; |
p=FD |
|
nouppercase |
Использовать строчные буквы в шестнадцатеричных цифрах |
int
p=253; |
p=fd |
|
showpos |
Выводить знак + для положительных чисел |
int
p=29; |
p=+29 |
|
noshowpos |
Не выводить знак + для положительных чисел |
int
p=29; |
p=29 |
|
scientific |
Экспоненциальная форма вывода вещественных чисел |
double
p=146.673; |
p=1.466730e+002 |
|
fixed |
Фиксированная форма вывода вещественных чисел (по умолчанию) |
cout<<"p="<<fixed<<p<<endl; |
p=146.673 |
|
setfill(c) |
Установить символ c как заполнитель |
cout<<"x="<<right<<setw(10)<<setprecision(4)<<setfill('!')<<(float)
1/7<<endl; |
x=!!!!0.1429 x=0.1429!!!! |
Другими способами управления шириной поля вывода с помощью операторов являются:
-
cout.width(n) — устанавливает ширину поля вывода — n позиций;
-
cout.precision(m) — определяет m цифр в дробной части числа;
При использовании операторов cin и cout фактически происходит ввод-вывод в текстовый файл. При вводе текстовым файлом является клавиатура, а при выводе — экран дисплея. Cin и cout фактически являются именами потоков (о них мы поговорим в следующих уроках), которые отвечают за ввод и вывод в текстовый файл. Поэтому многие рассмотренные возможности форматированного ввода-вывода будут использоваться и при обработке текстовых файлов.