Опубликован: 07.03.2015 | Уровень: для всех | Доступ: свободно | ВУЗ: Компания ALT Linux
Лекция 7:

Организация ввода-вывода в C++

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >

7.1.2 Использование манипуляторов форматирования

Манипуляторы встраиваются непосредственно в операторы ввода-вывода. C одним из манипуляторов (endl) читатель уже встречался начиная с первой главы книги. В табл. 7.2 приведены основные манипуляторы форматирования с примерами их использования. Для корректного использования всех манипуляторов необходимо подключить библиотеку:

#include <iomanip>
Таблица 7.2. Некоторые манипуляторы форматирования
Манипулятор Манипулятор Пример использования Результат
setw(n) Определяет ширину поля вывода в n символов
int r=253;
cout. setf ( ios :: fixed );
cout<<"r="<<setw(8)<<r<<endl;
r= 253
setprecision(n) Определяет количество цифр (n - 1) в дробной части числа
double h=1234.6578;
cout. setf ( ios :: fixed );
cout<<"h="<<setw(15);
cout<<setprecision(3);
cout<<h<<endl;
h=1234.658
dec Перевод числа в десятичную систему (по умолчанию)
int r=0253;
cout<<"r="<<dec<<r<<endl;
; r=171
oct Перевод числа в восьмеричную систему
int r=253;
cout<<"r="<<oct<<r<<endl;
r=375
hex Перевод числа в шестнадцатеричную систему
int r=253;
cout<<"r="<<hex<<r<<endl
p=fd
right Выравнивание по правой границе
int r=-25;
cout.width(15);
cout<<"r="<<setw(15)<<right;
cout<<r<<endl;
r=-25
left Выравнивание по левой границе (по умолчанию)
int r=-25;
cout.width(15);
cout<<"r="<<setw(15)<<left;
cout<<r<<endl;
2Ещё один пример приведён при использовании манипулятора setfill
r=-25
boolalpha Вывод логических величин в текстовом виде (true, false)
bool a=true;
cout<<boolalpha<<a<<endl;
true
noboolalpha Вывод логических величин в числовом виде (1, 0)
bool a=true;
cout<<noboolalpha<<a<<endl;
1
showpos Выводить знак "+" для положительных чисел
int p=29;
cout<<"p="<<showpos<<p<<
endl;
p=+29
noshowpos Не выводить знак "+" для положительных чисел
int p=29;
cout<<"p="<<
noshowpos<<p<<endl;
p=29
uppercase Использовать прописные буквы в шестнадцатеричных цифрах
int p=253;
cout<<"p="<<hex<<
uppercase<<p<<endl;
p=FD
nouppercase Использовать строчные буквы в шестнадцатеричных цифрах
int p=253;
cout<<"p="<<hex<<nouppercase;
cout<<p<<endl;
p=fd
showbase Выводить индикатор основания системы счисления
int p=253;
cout<<"p="<<hex<<uppercase
<<showbase<<p<<endl;
p=0XFD
noshowbase Не выводить индикатор основания системы счисления
int p=253;
cout<<"p="<<hex<<uppercase;
cout<<noshowbase<<p<<endl;
p=FD
setfill(c) Установить символ с как заполнитель
cout<<"x="<<right<<
setw(10)<<setprecision(4);
cout<<setfill("!");
cout<<(float)1/7<<endl;
cout<<"x="<<left<<setw(10);
cout<<setprecision(4);
cout<<setfill("!");
cout<<(float)1/7<<endl;
x=!!!!0.1429 x=0.1429!!!!
scientific Экспоненциальная форма вывода вещественных чисел
double p=146.673;
cout<<"p="<<scientific<<p<<
endl;
p=1.466730e+002
fixed Фиксированная форма вывода вещественных чисел (по умолчанию)
cout<<"p="<<fixed<<p<<endl;
p=146.673

Кроме того, управлять шириной поля вывода можно с помощью операторов:

  • cout.width(n) — устанавливает ширину поля вывода — n позиций;
  • cout.precision(m) — определяет m цифр в дробной части числа.

В п. 7.1.1 и 7.1.2 были рассмотрены основные возможности форматированного ввода-вывода. При использовании конструкций cin и cout фактически происходит ввод-вывод в текстовый файл. При вводе текстовым файлом является клавиатура ПК, при выводе в качестве текстового файла выступает экран дисплея, cin и cout фактически являются именами потоков3Подробнее о текстовых потоках речь пойдёт в п. 7.2, которые отвечают за ввод и вывод в текстовый файл. Поэтому многие рассмотренные возможности форматированного ввода-вывода будут использоваться и при обработке текстовых файлов.

Существует два основных типа файлов: текстовые и двоичные. Файлы позволяют пользователю считывать большие объёмы данных непосредственно с диска, не вводя их с клавиатуры.

< Лекция 6 || Лекция 7: 12345 || Лекция 8 >
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?