Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Не підтверджено.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.08 Mб
Скачать

Int mainO

{

cout.setf(ios::showpos); // Відображення знаку"+" перед позитивним значенням cout.setf(ios::scientific); // Відображення чисел у експоненціальному вигляді cout« 123 «""« 123.23 « endl;

cout.precision(2); // Дві цифри після десяткової крапки. cout.width(IO); // Все поле складається з 10 символів,

cout« 123 «"

cout.width(IO); //Встановлення ширини поля в 10 символів,

cout« 123.23 « endl;

cout.fill('#'); // Як заповнювач використаємо символ "#"

cout.width(IO); //Встановлення ширини поля в 10 символів,

cout« 123 «"";

cout.width(IO) // Встановлення ширини поля в 10 символів,

cout«123.23 getchO; return 0;

}

Внаслідок виконання ця програма відображає на екрані такі результати:

+123 +1.232300е+002 +123 +1.23е+002 #####№+123 +1 23е+002

У деяких реалізаціях С++-компілятора необхідно встановлювати значення ширини поля перед виконанням кожної операції виведення даних. Тому функція widthO у попередній програмі викликалася декілька разів.

У С++-системі введення-виведення визначено і перевизначено різні версії функцій widthO, precisionO і fillO, які не змінюють поточні значення відповідних па­раметрів форматування і використовуються тільки для їх отримання. Ось як виг­лядають їх прототипи:

  • streamsize width() - повертає поточну ширину поля;

  • charfillQ - повертає поточний символ заповнення;

  • streamsize precisionO - повертає поточну кількість цифр, що відображаються після десяткової крапки.

  1. Використання маніпуляторів введення-виведення даних

У С++-системі введення-виведення передбачено і другий спосіб зміни пара­метрів форматування даних, пов'язаних з потоком інформації. Він реалізується за допомогою спеціальних функцій - так званих маніпуляторів, які можна помістити у вираз введення-виведення. Призначення та функції стандартних С++маніпуля- торів введення-виведення описано в табл. 9.3.

Табл. 9.3. Стандартні С++-маніпуляторн введення-виведення

Маніпулятор

Призначення

Функція

boolalpha

Встановлює опцію boolalpha

Введення-

виведення

dec

Встановлює опцію dec

Введення-

виведення

endl

Виводить символ нового рядка і "скидає" потік, тобто переписує вміст буфера, пов'язаного з потоком, на від­повідний пристрій

Виведення

ends

Вставляє у потік нульовий символ (' \0')

Виведення

fixed

Встановлює опцію fixed

Виведення

flush

"Скидає" потік

Виведення

hex

Встановлює опцію hex

Введення-

виведення

internal

Встановлює опцію internal

Виведення

left

Встановлює опцію left

Виведення

noboolalpha

Онулює опція boolalpha

Введення-

виведення

noshowbase

Онулює опція showbase

Виведення

noshowpoint

Онулює опція showpoint

Виведення

noshowpos

Онулює опція showpos

Виведення

noskipws

Онулює опція skipws

Введення

nounitbuf

Онулює опція unitbuf

Виведення

nouppercase

Онулює опція uppercase

Виведення

oct

Встановлює опцію oct

Введення-

виведення

resetiosflags( fmtflaqs f)

Онулює опції, що задаються у параметрі/

Введення-

виведення

riqht

Встановлює опцію riqht

Виведення

scientific

Встановлює опцію scientific

Виведення

setbase(int ba-

seClass)

Встановлює основу системи числення, що дорівнює зна­ченню baseClass

Виведення

setfill(int ch)

Встановлює символ-заповнювач, що дорівнює значенню параметра ch

Виведення

setiosflags( fmtflaqs f)

Встановлює опції, що задаються у параметрі/

Введення-

виведення

setprecision(int

P)

Встановлює кількість цифр точності (після десяткової крапки), що дорівнює значенню параметра р

Виведення

setw(int w)

Встановлює ширину поля, що дорівнює значенню пара­метра W

Виведення

showbase

Встановлює опцію showbase

Виведення

showpoint

Встановлює опцію showpoint

Виведення

showpos

Встановлює опцію showpos

Виведення

skipws

Встановлює опцію skipws

Введення

unitbuf

Встановлює опцію unitbuf

Виведення

uppercase

Встановлює опцію uppercase

Виведення

ws

Пропускає провідні "пропускні" символи

Введення


У процесі використання маніпуляторів, які приймають аргументи, необхідно приєднати до програми заголовок <iomanip>.

Будь-який маніпулятор використовується як частина виразу введення-виве- дення. Нижче наведено код програми, у якій показано, як за допомогою маніпуля­торів можна керувати процесом форматування даних, які виводяться.

Код програми 9.6. Демонстрація механізму використання маніпуляторів для керування процесом форматування даних, які виводяться #include <iostream> // Для потокового введення-виведення

#include <iomanip> // Використання маніпуляторів введення-виведення

using namespace std; // Використання стандартного простору імен

int mainO

{

cout« setprecision(2) « 1000.243 « endl; cout« setw(20) «"Всім привіт!

getchO; return 0;

}

Внаслідок виконання ця програма відображає на екрані такі результати:

1е+003 Всім привіт!

Зверніть увагу на те, як використовуються маніпулятори у послідовності опе­рацій введення-виведення даних. Окрім цього, зверніть увагу також на те, коли маніпулятор викликається без аргументів (як, наприклад, маніпулятор endl у наве­деному вище коді програми), то його ім'я вказується без пари круглих дужок.

У наведеному нижче коді програми використано маніпулятор setiosflagsO для встановлення опцій scientific і showpos.

Код програми 9.7. Демонстрація механізму використання маніпулятора setiosflagsO Для встановлення опцій scientific і showpos #include <iostream> // Для потокового введення-виведення

#include <iomanip> // Використання маніпуляторів введення-виведення

using namespace std; // Використання стандартного простору імен

int mainO

{

// Відображення знаку"+" перед позитивним значенням числа cout« setiosflags(ios::showpos);

// Відображення чисел у експоненціальному вигляді cout« setiosflags(ios: scientific); cout « 123«""« 123.23;

getchO; return 0;

}

Внаслідок виконання ця програма відображає на екрані такі результати:

+123 +1.232300е+002

А у цьому коді програми продемонстровано механізм використання маніпу­лятора ws, який пропускає провідні "пропускні" символи при введенні рядка в ма­сив str.

Код програми 9.8. Демонстрація механізму використання маніпулятора ws, який пропускає провідні "пропускні" символи #include <iostream> // Для потокового введення-виведення

using namespace std; // Використання стандартного простору імен

int mainO

{

char str[80];

сіп » ws » str;

cout« str;

getchO; return 0;

}