- •ВВЕДЕНИЕ
- •КЛАССЫ
- •Описание объектов
- •Указатель this
- •Конструкторы
- •Конструктор копирования
- •Статические элементы класса
- •Статические методы
- •Дружественные функции и классы
- •Дружественные функции
- •Дружественный класс
- •Деструкторы
- •Перегрузка унарных операций
- •Перегрузка бинарных операций
- •Перегрузка операции присваивания
- •Перегрузка операции приведения типа
- •НАСЛЕДОВАНИЕ
- •Ключи доступа
- •Простое наследование
- •Правила наследования методов
- •Абстрактные классы
- •ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ
- •Синтаксис исключений
- •Перехват исключений
- •Список исключений
- •Иерархии исключений
- •СТАНДАРТНАЯ БИБЛИОТЕКА
- •Форматирование данных
- •Флаги и форматирующие методы
- •Манипуляторы
- •Методы обмена с потоком
- •Файловые потоки
- •СТРОКИ
- •Операции
- •Функции
- •Преобразование строк
- •Поиск подстрок
- •Сравнение частей строк
- •Получение характеристик строк
- •КОНТЕЙНЕРНЫЕ КЛАССЫ
- •Последовательные контейнеры
- •Векторы
- •Двусторонние очереди
- •Списки
- •Ассоциативные контейнеры
- •Словари
- •Словари с дубликатами (multimap)
- •ПРИЛОЖЕНИЕ 1. ШАБЛОНЫ ФУНКЦИЙ
- •ПРИЛОЖЕНИЕ 2. ШАБЛОНЫ КЛАССОВ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
ния об ошибках
В классах istream и ostream операции извлечения из потока >> и помещения в поток << определены путем перегрузки операций сдвига.
Числовые значения можно вводить в десятичной или шестнадцатеричной системе счисления (с префиксом 0x) со знаком или без знака. Вещественные числа представляются в форме с фиксированной точкой или плавающей точкой (с порядком).
При вводе строки извлечение происходит до ближайшего пробела(вместо него в строку записывается 0-символ).
Значения указателей вводятся в шестнадцатеричной системе счисления.
Форматирование данных
Форматирование в потоковых классах выполняется тремя способами: помощью флагов, манипуляторов и форматирующих методов.
Флаги и форматирующие методы
Флаги – это отдельные биты, объединенные в поле x_flags типа long клас-
са ios.
|
|
Таблица 3 |
|
|
Некоторые флаги форматирования |
||
|
|
|
|
Флаг |
Умолчание |
Описание |
|
skipws |
+ |
При извлечении пробельные символы игнори- |
|
|
|
руются |
|
left |
- |
Выравнивание по левому краю поля |
|
right |
+ |
Выравнивание по правому краю поля |
|
internal |
- |
Знак числа выводится по левому краю, число – |
|
|
|
по правому |
|
dec |
+ |
Десятичная система счисления |
|
oct |
- |
Восьмеричная система счисления |
|
hex |
- |
Шестнадцатеричная система счисления |
|
showbase |
- |
Выводится основание системы счисления (0x – |
|
|
|
шестнадцатеричная, 0 – восьмеричная) |
|
showpoint |
- |
При выводе числа печатается точка и дробная |
|
|
|
часть числа |
|
uppercase |
- |
Использование при выводе верхнего регистра |
|
scientific |
- |
Печать вещественных чисел в экспоненциаль- |
|
|
|
ной форме |
|
fixed |
- |
Печать вещественных чисел в форме с фикси- |
|
|
|
рованной точкой |
|
Для управления флагами в классе ios есть методы flags, setf и unsetf. long ios :: flags (long); – возвращает текущие флаги потока;
long ios :: flags (long); – присваивает флагам значение параметра;
35
long ios :: setf (long, long); – присваивает флагам, биты которых установлены в первом параметре, значение соответствующих битов второго параметра; long ios :: setf (long, long); – устанавливает флаги, биты которых установ-
лены в параметре;
long ios :: unsetf (long, long); – сбрасывает флаги, биты которых установлены в параметре;
Все функции возвращают прежние флаги потока.
Кроме флагов для форматирования используются поля класса ios: int x_width – минимальная ширина поля;
int x_precision – количество цифр в дробной части числа; int x_fill – символ заполнения поля вывода.
Для управления этими полями используются методы width, precision и fill: int ios :: width ( ) – возвращает значение ширины поля вывода;
int ios :: width ( ) – устанавливает значение ширины поля вывода;
int ios :: precision ( ) – возвращает значение точности представления дробной части;
int ios :: precision (int ) – устанавливает значение точности представления дробной части;
char fill ( ) – возвращает текущий символ заполнения;
char fill (char) – устанавливает значение текущего символа заполнения (по умолчанию – пробел).
Перед установкой некоторых флагов требуется сбросить флаги, которые не могут быть установлены одновременно с ними. Для этого удобно использовать вторым параметром метода setf статические константы класса ios:
adjustfield (left | right | internal) basefield ( dec | oct | hex) floatfield (scientific | fixed)
Пример
# include <iostream.h>
int main ( ) {
long a = 100, b = 077;
cout.width (7); cout.unsetf (ios :: dec);
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;
36
cout << c;
return 0;}
Результат работы программы: 0X3T8 0X3F
0.12
0.00013
Манипуляторы
Манипуляторы – это функции, которые можно включать в цепочку операций помещения и извлечения для форматирования данных. Манипуляторы бывают простые и параметризованные. Манипуляторами пользоваться удобнее, чем флагами.
Простые манипуляторы
dec – устанавливает флаг десятичной системы; oct – устанавливает флаг восьмеричной системы;
hex – устанавливает флаг шестнадцатеричной системы;
ws – устанавливает при вводе извлечение пробельных символов;
endl – при выводе включает в поток символ новой строки и выгружает буфер;
ends – при выводе включает в поток нулевой символ; flush – при выводе выгружает буфер.
Изменение системы счисления действует до следующего явного измене-
ния.
Пример
…
cout << 13 << hex << ‘ ‘ << 13 << oct << ‘ ‘ << 13 << endl;
…
На экране: 13 d 15
Параметризованные манипуляторы
Параметризованные манипуляторы – это манипуляторы, имеющие аргумент. Для их использования необходимо подключать заголовочный файл
<iomanip>.
setbase (int n) – задает основание системы счисления (n = 8, 10, 16 или 0). 0 – основание по умолчанию (десятичное, кроме случаев, когда вводятся восьмеричные или шестнадцатеричные числа);
resetiosflags ( long) – сбрасывает флаги состояния потока, биты которых установлены в параметре;
setfill (int) – устанавливает символ-заполнитель с кодом, равным значению параметра;
setprecision (int) – устанавливает максимальное количество цифр в дробной части чисел;
37