Файл: Лекция №8 Организация ввода - вывода в С++.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.05.2025

Просмотров: 112

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лекция 8.Организация ввода-вывода в C++

8.1. Форматированный ввод-вывод в C++

Для управления вводом-выводом в C++ используются:

флаги форматного ввода-вывода;

манипуляторы форматирования.

8.1.1. Использование флагов форматного ввода-вывода

Флаги позволяют включить или выключить один из параметров вывода на экран. Для установки флага вывода используется следующая конструкция языка C++.

cout.setf(ios::flag)

Для снятия флага используется конструкция cout.unsetf(ios::flag)

здесь flag – имя конкретного флага.

Если при выводе необходимо установить несколько флагов, то можно воспользоваться логической операцией «или» (|). В этом случае конструкция языка C++ будет такой.

cout.setf(ios::flag1|ios::flag2| ios::flag3)

В данном случае flag1, flag2, flag3 – имена устанавливаемых флагов вывода. Основные флаги форматирования с примерами приведены в таблице 8.1.

8.1.2. Использование флагов форматного ввода-вывода

Основные манипуляторы с примерами приведены в табл. 8.2 Еще один способ управления шириной поля вывода с помощью операторов:

cout.width(n) – устанавливает ширину поля вывода – n позиций;

cout.presicion(m) - определяет m цифр в дробной части числа.

1

Таблица 8.1. Флаги форматирования

Флаг

Описание

Пример использования

Результат

right

Выравнивание

по

int r=-25;

правой границе

cout.setf(ios::right);

cout.width(15);

r=-25

cout<<"r="<<r<<endl;

left

Выравнивание

по

double r=-25.45;

левой

границе

(по

cout.setf(ios::left);

умолчанию)

cout.width(50);

r=-25.45

cout<<"r="<<r<<endl;

boolalpha

Вывод

логических

bool a=true;

1

величин в текстовом

cout<<a<<endl;

виде (true, false)

cout.setf(ios::boolalpha);

cout<<a<<endl;

true

dec

Вывод

величин

в

int r=-25;

r=-25

десятичной

системе

cout<<"r="<<r<<endl;

счисления

(по

умолчанию)

int p=23;

oct

Вывод

величин

в

восьмеричной

cout.unsetf(ios::dec);

системе

счисления

cout.setf(ios::oct);

p=27

(для

этого

надо

cout<<"p="<<p<<endl;

снять

флаг вывод в

десятичной)

int p=23;

hex

Вывод

величин

в

шестнадцатеричной

cout.unsetf(ios::dec);

системе

счисления

cout.setf(ios::hex);

p=17

(для

этого

надо

cout<<"p="<<p<<endl;

снять

флаг вывод в

2


Флаг

Описание

Пример использования

Результат

десятичной)

int p=23;

showbase

Выводить индикатор

основания

системы

cout.unsetf(ios::dec);

счисления

cout.setf(ios::hex|ios::showbase);

p=0x17

cout<<"p="<<p<<endl;

uppercase

Использовать

int p=29;

прописные

буквы в

cout.unsetf(ios::dec);

шестнадцатеричных

cout.setf(ios::hex|ios::uppercase);

p=1D

цифрах

cout<<"p="<<p<<endl;

showpos

Выводить

знак «+»

int p=29;

для положительных

cout.setf(ios::showpos);

p=+29

чисел

cout<<"p="<<p<<endl;

scientific

Экспоненциальная

double p=146.673;

форма

вывода

cout.setf(ios::scientific);

p=1.466730e+002

вещественных чисел

cout<<"p="<<p<<endl;

fixed

Фиксированная

double p=146.673;

форма

вывода

cout.setf(ios::fixed);

p=146.673

вещественных чисел

cout<<"p="<<p<<endl;

(по умолчанию)

3


Таблица 8.2. Манипуляторы форматирования

Манипулятор

Описание

Пример использования

Результат примера

setw(n)

Определяет

ширину

int r=253;

поля вывода в

n

cout.setf(ios::fixed);

r=

253

символов

cout<<"r="<<setw(10)<<r<<

endl;

setprecisi-on(n)

Определяет количество

double h=1234.6578;

цифр (n-1) в дробной

cout.setf(ios::fixed);

части числа

cout<<"h="<<setw(15)<<

h=

1234.658

setprecision(3)<<h<<endl;

dec

Перевод

числа

в

int r=0253;

r=171

десятичную

систему

cout<<"r="<<dec<<r<<endl;

(по умолчанию)

int r=253;

oct

Перевод

числа

в

r=375

восьмеричную систему

cout<<"r="<<oct<<r<<endl;

hex

Перевод

числа

в

int r=253;

p=fd

шестнадцати-ричную

cout<<"r="<<hex<<r<<endl

систему

int r=-25;

right

Выравнивание

по

правой границе

cout.width(15);

r

=-25

cout<<"r="<<setw(15)<<right<<r<<endl;

left

Выравнивание

по

int r=-25;

r=-25

левой

границе

(по

cout.width(15);

умолчанию)

cout<<"r="<<setw(15)<<left<<r<<endl;1

boolalpha

Вывод

логических

bool a=true;

true

величин

в

текстовом

cout<<boolalpha<<a<<endl;

виде (true, false)

1 Еще один пример приведен при использовании манипулятора setfill

4


Манипулятор

Описание

Пример использования

Результат примера

noboolalpha

Вывод

логических

bool a=true;

1

величин в

числовом

cout<<noboolalpha<<a<<endl;

виде (1, 0)

int p=29;

showpos

Выводить знак «+» для

p=+29

положительных чисел

cout<<"p="<<showpos<<p<<endl;

noshowpos

Не выводить знак «+»

int p=29;

p=29

для

положительных

cout<<"p="<<noshowpos<<p<<endl;

чисел

int p=253;

uppercase

Использовать

p=FD

прописные

буквы

в

cout<<"p="<<hex<<uppercase<<p<<endl;

шестнадцатеричных

цифрах

int p=253;

nouppercase

Использовать

строчные

буквы

в

cout<<"p="<<hex<<

p=fd

шестнадцатеричных

nouppercase<<p<<endl;

цифрах

int p=253;

showbase

Выводить

индикатор

p=0XFD

основания

системы

cout<<"p="<<hex<<uppercase

счисления

<<showbase<<p<<endl;

noshowbase

Не

выводить

int p=253;

p=FD

индикатор

основания

cout<<"p="<<hex<<uppercase

системы счисления

<<noshowbase<<p<<endl;

showpos

Выводить знак «+» для

int p=28;

p=+29

положительных чисел

cout.setf(ios::showpos);

cout<<"p="<<p<<endl;

x=!!!!0.1429

setfill(c)

Установить

символ

с

cout<<"x="<<right<<setw(10

как заполнитель

<<setprecision(4)<<

setfill('!')<<

5


Манипулятор

Описание

Пример использования

Результат примера

(float) 1/7<<endl;

cout<<"x="<<left<<setw(10)

x=0.1429!!!!

<<setprecision(4)<<

setfill('!')<<(float) 1/7<<endl;

scientific

Экспоненциальная

double p=146.673;

p=1.466730e+002

форма

вывода

cout<<"p="<<scientific<<p<<endl;

вещественных чисел

cout<<"p="<<fixed<<p<<endl;

p=146.673

fixed

Фиксированная

форма

вывода вещественных чисел (по умолчанию)

6