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

Void unsetf(fmtflags flags),

У цьому випадку будуть очищені опції, що задаються параметром flags. При цьому всі інші опції залишаються у попередньому стані.

Для того, щоби дізнатися про поточні установки опцій форматування, потріб­но скористатися функцією flagsO, прототип якої має такий вигляд: fmtflags flagsO;

Ця функція повертає поточні значення опцій форматування для потоку, що викли­кається.

При використанні наведеного нижче формату виклику функції flagsO встанов­люються значення опцій форматування відповідно до вмісту параметра flags і по­вертаються їх попередні значення: fmtflags flags(fmtflags flags),

Щоб зрозуміти, як працюють функції flags() і unsetf(), розглянемо детально на­ведену нижче програму. Вона містить функцію showflagsO, яка відображає поточ­ний стан опцій форматування потоку інформації.

Код програми 9.4. Демонстрація механізму використання функцій

flagsO і unsetfO

#include <iostream> // Для потокового введення-виведення

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

Void showflags(ios::fmtflags f); // Відображення поточного стану опцій

Int mainO

{

Ios::fmtflags f; // Оголошення параметру для поточного стану опцій

f = cout.flagsO; // Отримання поточного стану опцій showflags(f); // Відображення поточного стану опцій

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

f = cout.flagsO; Ч Отримання поточного стану опцій showflags(f); // Відображення поточного стану опцій

// Скидання опції, що відображає числа в експоненціальному вигляді cout.unsetf(ios::scientific);

f = cout.flagsO; // Отримання поточного стану опцій showflags(f); // Відображення поточного стану опцій

getchO; return 0;

}

void showflags(ios::fmtflags f) // Відображення поточного стану опцій {

long і;

for(i=0x4000; і; і = і » 1) if(i & f) cout«"1 else cout«"0 cout« endl;

}

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

У наведеному вище коді програми зверніть увагу на те, що тип fmtflags вказа­но з префіксом ios::. Йдеться про те, що тип fmtflags визначено у класі ios. У загаль­ному випадку при використанні імені типу або перерахованої константи, визначе­ної у певному класі, необхідно вказувати відповідне ім'я разом з іменем класу.

  1. Встановлення ширини поля, точності значення та символів заповнення

Окрім опцій форматування можна також встановлювати ширину поля, сим­вол заповнення і кількість цифр після десяткової крапки (точність). Для цього до­статньо використовувати такі функції: streamsize width(streamsize len);

char fill(char ch);

streamsize precision(streamsize num);

  1. Функція width() повертає поточну ширину поля і встановлює нову, що дорівнює значенню параметра Іеп. Ширина поля, яка встановлюється за замовчуванням, визначається кількістю символів, необхідних для зберігання даних у кожному конкретному випадку.

  2. Функція fillO повертає поточний символ заповнення (за замовчуванням викорис­товується пропуск) і встановлює як новий поточний символ заповнення значень, які задаються параметром ch. Цей символ використовують для доповнення ре­зультату символами, яких не вистачає для досягнення заданої ширини поля.

  3. Функція precision() повертає поточну кількість цифр, що відображаються після десяткової крапки, і встановлює нове поточне значення точності, що дорівнює значенню параметра num1. Тип streamsize визначено як цілочисельний.

Розглянемо код програми, яка демонструє використання цих трьох функцій.

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

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