Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Способи форматування даних при використанні потоків.⇐ ПредыдущаяСтр 13 из 13
3.Форматування даних. В потокових класах форматування даних виконується трьома способами: 1) за допомогою прапорців; 2) за допомогою маніпуляторів; 3) за допомогою форматуючих методів.
Прапорці і форматуючі методи Прапорцями є окремі біти, об'єднані в полі x_flags типу long класу ios. Прапорці перераховані в таблиці 1.
Таблиця 1. Прапорці форматування класу ios
Прапорці (left, right та internal), (dec, oct та hex), а також (scientific та fixed) взаємно виключають один одного, тобто в кожен момент може бути встановлений лише один прапорців з кожної групи. Для управління прапорцями в класі ios є методи flags, setf і unsetf: long ios:: flags(); — повертає поточні прапорці потоку; long ios:: flags(long); — присвоює прапорцям значення параметра; long ios:: setf (long, long); — присвоює прапорцям, біти яких встановлені у першому параметрі, значення відповідних бітів другого параметра; long ios:: setf (long); — встановлює прапорці, біти яких встановлені у параметрі; long ios:: unsetf (long); — скидає прапорці, біти яких зазаначені в параметрі. Всі функції повертають попередні прапорці потоку.
Окрім прапорців, для форматування використовуються наступні поля класу ios: int x_width — мінімальна ширина поля виведення; int x_precision — точність (кількість цифр в дробовій при виведенні дійсних чисел); int x_fill — символ заповнення поля виведення.
Для управління цими полями використовуються методи width, precision та fill: int ios:: width() — повертає значення ширини поля; int ios:: width (int) — встановлює ширину поля відповідно до значення параметра; int ios:: precision() — повертає значення точності подання при виведенні дійсних чисел; int ios:: precision(int) — встановлює значення точності подання при виведенні дійсних чисел, повертає старе значення точності; char fill () — повертає поточний символ заповнення; char fill (char) — встановлює значення поточного символу заповнення, повертає старе значення символу.
Приклад форматування даних за допомогою прапорців і методів. #include < iostream.h> int main() { long a = 1000, b = 077; cout.width (7); cout.setf (ios:: hex | ios:: showbase | ios:: uppercase); cout < < a; cout.width (7); cout < < b < < endl; double d = 0.12, c= 1.3e-4; cout.setf (ios:: left); cout < < d < < endl; cout < < c; return 0; } В результаті роботи програми в першому рядку будуть ВЕЛИКИМИ буквами виведені змінні а і b в шістнадцятковому поданні, для кожної з них виділяється по 7 позицій (функція width діє тільки на одне значення, що виводиться, тому її виклик потрібно повторити двічі). Значення змінних с і d прив’язані до лівого краю поля: ..ОХ3ЕВ...0X3F 0.12 0.00013
|