Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекцій.doc
Скачиваний:
15
Добавлен:
03.11.2018
Размер:
1.12 Mб
Скачать

12.5 Форматований ввід-вивід

Бiблiотека потокiв C++ передбачає три способи управлiння форматом вихiдних даних: виклик форматуючих функцiй-елементiв, використання прапорцiв та використання манiпуляторiв.

Функцiї для форматування, якi знаходяться в класi ios,перевантаженi так, щоб забезпечити можливiсть як для читання, так i для встановлення улравляючого атрибуту. Часто для атрибутiв, якими можна управляти за допомогою функцiй, бiблiотека потокiв C++ передбачає також манiпулятори. Нижче описані атрибути, для управління якими в класі ios описані функції-члени.

12.5.1 Ширина поля

Для читання i встановлення ширини поля потоку в класi ios є функцiї width:

int ios:: width(); -повертає поточне значення внутрiшньої ширини поля

int ios::width(int); -встановлює значення внутрiшньої змiнної ширини поля;

* при вводi, метод width можна використовувати для задання

максимального числа символiв для читання.

* при виводi, метод задає мiнiмальну ширину поля.

* якщо ширина поля менше заданої, вихiд доповнюється заповнюючими символами fill.

* якщо при виводі вихiдне поле бiльше вказаного, значення width iгнорується.

* по замовчуванню, значення width рiвне 0 (вивід не доповнюється і не обрізається).

* width обнуляється пiсля кожного помiщення даних в потiк.

Приклад 1:

char name[max];

cout <<'Введiть iм'я(max"<<max-1<<"символiв):";

cin .width(max);

cin >>name;

cout <<"hello",<<name<<,'!';

Приклад 2(вирівнювання правого поля при виводі чисел:)

const int fLD=10;

int main(void)

{ int x1=2867;

int y1=20051;

int z1=017;

cout.width(FLD);

cout <<x1<<'\n';

cout.width(FLD);

cout <<y1<<'\n';

return 0; }

12.5.2 Заповнюючий символ

Для читання або змiни бiжучого заповнюючого символа можна застосовувати функцiї ios::fill :

char ios::fill(); - повертає бiжучий символ заповнення.

char ios::fill(char); - встановлює внутрiшнiй заповнюючий символ потоку i повертає його попереднє значення.

Cимволом заповнення по замовчуванню є пропуск.

Приклад (встановлення заповнюючого символа ‘\0’)

const char FILL_CHAR=‘\0’;

cout.fill(FILL_CHAR);

cout.width(10);

int x=2867;

cout<<x<<‘\n’;

12.5.3 Число цифр дійсних чисел

Функцiї ios::precision можуть використовуватись при виводi чисел з плаваючою крапкою, дозволяючи читати або встановлювати бiжуче число значущих цифр.

int ios::precision(int); -встановлює внутрiшню змiнну точностi дiйсних чиселпотоку i повертає попереднє значення.

int ios::precision(); - повертає бiжуче значення точностi.

* По замовчанню точнiсть рiвна 6 цифрам.

* Якщо встановлений прапопець scientific або fixed, precision задає число цифр, що виводяться пiсля десяткової крапки.

* Якщо не встановлено нi один з прапорцiв scientific або fixed, precision задає загальне число значущих цифр.

#include<iostream.h>

int main(void)

{

float f=3456.141592;

double d=50.2345639101;

cout.precision(4);

cout<<d<<‘\n’;

cout<<f<<‘\n’;

cout<<f<<‘\n’;

return 0;

}