Установка ширины поля, точности и символов заполнения



 

Помимо флагов форматирования можно также устанавливать ширину поля, символ заполнения и количество цифр после десятичной точки (точность). Для этого достаточно использовать следующие функции.

 

 

Функция width() возвращает текущую ширину поля и устанавливает новую равной значению параметра len . Ширина поля, которая устанавливается по умолчанию, определяется количеством символов, необходимых для хранения данных в каждом конкретном случае. Функция fill() возвращает текущий символ заполнения (по умолчанию используется пробел) и устанавливает в качестве нового текущего символа заполнения значение, заданное параметром ch . Этот символ используется для дополнения результата символами, недостающими для достижения заданной ширины поля. Функция precision() возвращает текущее количество цифр, отображаемых после десятичной точки, и устанавливает новое текущее значение точности равным содержимому параметра num . (По умолчанию после десятичной точки отображается шесть цифр.) Тип streamsize определен как целочисленный тип.

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

 

 

Эта программа генерирует такие результаты.

 

 

В некоторых реализациях необходимо устанавливать значение ширины поля перед выполнением каждой операции вывода. Поэтому функция width() в предыдущей программе вызывалась несколько раз.

В системе ввода‑вывода C++ определены и перегруженные версии функций width() , precision() и fill() , которые не изменяют текущие значения соответствующих параметров форматирования и используются только для их получения. Вот как выглядят их прототипы,

 

Использование манипуляторов ввода‑вывода

 

Манипуляторы позволяют встраивать инструкции форматирования в выражение ввода‑вывода.

В С++‑системе ввода‑вывода предусмотрен и второй способ изменения параметров форматирования, связанных с потоком. Он реализуется с помощью специальных функций, называемых манипуляторами , которые можно включать в выражение ввода‑вывода. Стандартные манипуляторы описаны в табл. 18.1.

 

 

 

 

 

 

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

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

 

 

Результаты выполнения этой программы таковы.

 

 

Обратите внимание на то, как используются манипуляторы в цепочке операций ввода‑вывода. Кроме того, отметьте, что, если манипулятор вызывается без аргументов (как, например, манипулятор endl в нашей программе), то его имя указывается без пары круглых скобок.

В следующей программе используется манипулятор setiosflags() для установки флагов scientific и showpos .

 

 

Вот результаты выполнения данной программы.

 

 

А в этой программе демонстрируется использование манипулятора ws , который пропускает ведущие "пробельные" символы при вводе строки в массив s :

 


Дата добавления: 2018-09-22; просмотров: 381; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!