Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_voprosy_k_ekzamenu_po_C.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
241.66 Кб
Скачать

29. Правила ввода и вывода величин

30. Форматирование данных. Флаги и форматирующие методы. Манипуля­торы

В потоковых классах форматирование выполняется тремя способами с помощью флагов, манипуляторов и форматирующих методов.

Флаги представляют собой отдельные биты, объединенные в поле x_flags типа long класса ios. Для управления флагами в классе ios есть методы flags, setf и unsetf.

long ios:: flags(); — возвращает текущие флаги потока;

long ios:: flags (long); — присваивает флагам значение параметра и др.

Примеры флагов форматирования: left/right - выравнивание по левому/правому краю поля; dec - десятичная система счисления и др.

Манипуляторами называются функции, которые можно включать в цепочку операций помещения и извлечения для форматирования данных. Манипуляторы делятся на простые, не требующие указания аргументов, и параметризованные.

Примеры манипуляторов, не требующих изменения: dec — устанавливает при вводе и выводе флаг десятичной системы счисления; oct — устанавливает при вводе и выводе флаг восьмеричной системы счисления; endl — при выводе включает в поток символ новой строки и выгружает буфер и др.

Примерами параметризированных манипуляторов можно назвать: setbase(int n) — задает основание системы счисления (и = 8, 16, 10 или 0); resetiosflags(long) — сбрасывает флаги состояния потока, биты которых установлены в параметре и др.

31. Методы обмена с потоками. Класс iоstream

В потоковых классах наряду с операциями извлечения » и включения « определены методы для неформатированного чтения и записи в поток (при этом преобразования данных не выполняются).

Ниже приведены функции чтения, определенные в классе istream:

  • gcount() - — возвращает количество символов, считанных с помощью последней функции неформатированного ввода;

  • get() - возвращает код извлеченного из потока символа или EOF;

  • peek() - возвращает следующий символ без удаления его из потока или EOF, если достигнут конец файла;

  • unget() - помещает последний прочитанный символ в поток и возвращает ссылку па текущий поток и др.

Частью стандартной библиотеки C++ является библиотека iostream – объектно-ориентированная иерархия классов, где используется и множественное, и виртуальное наследование. В ней реализована поддержка для файлового ввода/вывода данных встроенных типов. Для использования библиотеки iostream в программе необходимо включить заголовочный файл: #include <iostream>

Операции ввода/вывода выполняются с помощью классов istream (потоковый ввод) и ostream (потоковый вывод). Третий класс, iostream, является производным от них и поддерживает двунаправленный ввод/вывод. Чтобы использовать часть библиотеки iostream, связанную с файловым вводом/выводом, необходимо включить в программу заголовочный файл: #include <fstream>

В классе ostream определены аналогичные функции для неформатированного вывода:

  • flush() — записывает содержимое потока вывода на физическое устройство;

  • put (с) — выводит в поток символ с и возвращает ссылку па поток;

  • tellg() — возвращает текущую позицию записи потока;

  • write(buf, num) — записывает в поток num символов из массива buf и возвращает ссылку на поток и др.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]