Программирование >>  Структурное программирование 

1 ... 221 222 223 [ 224 ] 225 226 227 ... 342


при обнаружении заданного ограничителя (по умолчанию символом ограничителем является EOF).

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

Функция-элемент реек возвращает очередной символ из входного потока, но не удаляет его из потока.

Язык C-f-f обеспечивает сохранение типов данных при вводе-выводе. Если операциями и обрабатываются непредусмотренные данные, то устанавливаются различные флаги ошибок, с помощью которых пользователь может определить, были ли операции ввода-вывода успешными, или нет.

Неформатированный ввод-вывод выполняется с помощью функций-элементов read и write. Каждая из них вводит некоторое число байтов в символьный массив в памяти или выводит их из него. Эти байты не подвергаются какому-либо форматированию и вводятся или выводятся как сырые байты.

Функция-элемент gcount сообщает о количестве символов, прочитанных последней операцией read.

Функция-элемент read вводит в символьный массив указанное число символов. Если считывается меньшее количество символов, то устанавливается бит failbit.

Для изменения основания интерпретации целых чисел в потоке используйте манипулятор hex, чтобы установить шестнадцатеричный формат представления элементов данных (с основанием 16), или манипулятор oct, чтобы установить восьмеричный формат представления данных (с основанием 8). Используйте манипулятор dec для возврата к основанию потока 10. Основание потока остается установленным до тех пор, пока оно не будет изменено явным образом новой установкой.

Основание потока может быть также изменено с помощью манипулятора потока setbase, который принимает один целый параметр со значениями 10, 8 или 16, задающими соответствующие основания системы счисления.

Точностью печатаемых чисел с плавающей запятой можно управлять, используя манипулятор потока precision или функцию-элемент setprecision. Вызов любой из этих установок точности действует для всех последующих операций вывода до тех пор, пока не будет произведена следующая установка точности. Функция-элемент precision не имеет никаких аргументов и возвращает текущее значение точности. Точность О устанавливает точность по умолчанию, равную 6.

При использовании параметризованных манипуляторов потоков необходимо в программу включать заголовочный файл <iomanip.h>.

Функция-элемент width устанавливает ширину поля и возвращает предыдущую ширину поля. Если обрабатываемые значения имеют меньше символов, чем заданная ширина поля, то для заполнения лишних позиций используются заполняющие символы. Установка ширины поля влияет только на следующую операцию поместить или взять; затем ширина поля устанавливается неявным образом на О, т.е. поле



Глава 11

для представления выходных значений будут просто такой ширины, которая необходима. Если число символов в обрабатываемом значении больше, чем заданная ширина поля, то число будет напечатано полностью. Функция width, не имеющая аргументов, возвращает текущую установку. Для установки ширины поля может быть также использован манипулятор потока setw.

При вводе манипулятор потока setw устанавливает максимальный размер строки; если вводится строка, превышающая заданный размер, то вводимая строка разбивается на фрагменты, не превышающие заданного размера.

Пользователи могут создавать собственные манипуляторы потоков.

Функции-элементы setf, unsetf и flags управляют установками флагов.

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

Флаги форматов определяются в классе ios как переменные перечислимого типа.

Флаги форматов могут управляться с помощью функций-элементов flags и setf, но многие программисты предпочитают использовать манипуляторы потоков. Можно использовать операцию побитовое ИЛИ для объединения разных опций в одно значение типа long. Вызов функции-элемента flags для потока с заданием этих соединенных операцией I опций устанавливает опции этого потока и возвращает значение типа long, содержащее предыдущие значения опций. Это значение часто сохраняется с тем, чтобы можно было впоследствии вызвать функцию flags с этим сохраненным значением и восстановить предыдущие значения опций.

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

Флаг showpoint устанавливается для вывода числа с обязательной печатью десятичной точки и нулевых младших разрядов, число которых определяется заданной точностью.

Флаги left и right позволяют выравнивать печать соответственно по левой или правой границам поля с помощью заполняющих символов, печатаемых соответственно в правых или левых пустых позициях.

Флаг internal показывает, что знак числа (или основание, если установлен флаг ios::showbase) следует выравнивать по левой границе поля, значение числа следует выравнивать по правой границе, а в промежуточных пустых позициях следует разместить заполняющие символы.

Флаги left, right и internal содержатся в статическом элементе данных ios::adjustfield.

Функция-элемент fill задает заполняющий символ, который используется при выравнивании в полях с помощью left, right и internal (по



умолчанию - пробел). Функция fill возвращает предыдущий заполняющий символ. Манипулятор setfill также устанавливает значение заполняющего символа.

Статический элемент ios::basefield включает биты флагов oct, hex и dec, которые трактуют целые числа соответственно как восьмеричные, шестнадцатеричные или десятичные значения. Если ни один из этих битов не установлен, то по умолчанию целые числа при операции поместить в поток трактуются как десятичные. При операции взять из потока данные по умолчанию обрабатываются в той форме, в которой они поступают.

Флаг showbase устанавливается, чтобы задавать основание целочисленных значений для вывода.

В статическом элементе данных ios::floatfield содержатся флаги scientific и fixed. Устанавливайте флаг scientific для вывода чисел с плавающей запятой в экспоненциальном формате. Устанавливайте флаг fixed для вывода чисел с плавающей запятой в формате с фиксированной точкой с заданным количеством разрядов, указанным с помощью функции-элемента precision.

Вызов cout.setf (О, ios::floatfield) восстанавливает формат вывода чисел с плавающей запятой по умолчанию.

Устанавливайте флаг uppercase для вывода в верхнем регистре символов X и Е в шестнадцатеричном и экспоненциальном форматах соответственно. Когда флаг ios::uppercase установлен, все буквы шест-надцатеричного формата печатаются в верхнем регистре.

Функция-элемент flags без аргумента возвращает текущие установки флагов формата в виде значения типа long. Функция-элемент flags с аргументом типа long устанавливает флаги формата, заданные с помощью аргумента, и возвращает прежние установки флагов.

Функция-элемент setf устанавливает флаги формата, заданные в качестве аргумента, и возвращает прежние установки флагов в виде значения типа long.

Функция-элемент setf (long setBits, long resetBits) очищает биты re-setBits, a затем устанавливает биты setBits.

Функция-элемент unsetf сбрасывает указанные флаги и возвращает значения этих флагов, которые существовали ранее.

Параметризованный манипулятор потока setiosflags выполняет те же функции, что и функция-элемент flags.

Манипулятор потока resetiosflags выполняет те же функции, что и функция-элемент unsetf.

Состояние потока может быть проверено с помощью битов класса ios.

Бит eofbit для входного потока автоматически устанавливается, когда встречается признак конца файла при операции ввода. Программа может использовать функцию-элемент eof, чтобы определить, установлен ли eofbit.

Бит failbit устанавливается для потока, если в потоке происходит ошибка форматирования, но символы не утеряны. Функция-элемент fail



1 ... 221 222 223 [ 224 ] 225 226 227 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика