Программирование >>  Расширенная версия языка c++ 

1 ... 80 81 82 [ 83 ] 84 85 86 ... 227


Манипуляторы ввода/вывода ются специальными функциями формата ввода/вывода, которые, в отличие от функций - членов класса ios, могут располагаться внутри инструкций ввода/вывода. Стандартные манипуляторы показаны в табл. 8.1. Как можно заметить при изучение ицы, значительная часть манипуляторов ввода/вывода по своим действиям аналогична соответствующим функциям - членам класса ios. Многие манипуляторы, представленные в табл. 8.1, стали частью языка совсем недавно, после появления стандарта Standard ++, и поддерживаются только современными компиляторами.

Для доступа к манипуляторам с параметрами (таким, как функция setw()), необходимо включить в программу заголовок <iomanip>. В этом заголовке нет необходимости при использовании манипуляторов без параметров.

Как уже манипуляторы можно задавать внутри цепочки опера-

ций ввода/вывода. Например:

cou . ocW< 10< he< 100; cout <. setw(lO) 100;

Первая инструкция сообщает потоку cout о необходимости вывода цел1х в

восьмеричной системе счисления и выводит число 100 в восьмеричной системе

счисления. Затем она сообщает потоку ввода/вывода о необходимости вывода целых в системе счисления и далее осуществляется вывод

числа 100 уже цатеричь[ОМ: формате. Во второй инструкции устанавливается ширина поля равная 10, и затем снова выводится 100 в шестнадцатерич-ном формате. Обратите внимание, если используется манипулятор без аргументов (в данном примере им является манипулятор oct), скобки за ним не ставятся, поскольку это на самом деле адрес манипулятора, передаваемый перегруженному оператору

Таблице. 1. Манипулятор выводаязыка Standard C++

Манипулятор

Назначение

Ввод/Вывод

boolalpha

Установка флага boolalpha

Ввод/Вывод

Установка флага dec

Ввод/Вывод

endl

Вывод символа новой строки иочистка потока

Вывод

ends . .j, fixed ... :rrv?=

Вывод значения NULL ,; ,

Вывод

Установка флага fixed ,

Вывод

flush

Очистка потока

Вывод

Установка флага hex

Ввод/Вывод

internal

Установка флага internal

Вывод

m

Установка флага left

Вывод

noboolaipha

Сброс флага boolalpha

Ввод/Вывод



Таблица 8.1 (продолжение)

Манипулятор

Назначение

Ввод/Вывод

noshowbase

Сброс флага showbase

Вывод

noshowpornt

Сброс флага showpoint

Вывод

noshowpos

Сброс флага showpos

Вывод

noskipws

Сброс флага skipws , ;.

Ввод

nounitbuf

Сброс флага unitbuf

Вывод

nouppercase

Сброс флага uppercase

Вывод

oct ]*

Установка флага oct

Ввод/Вы вод

resetiosflags(fmtf[ags f)

Сброс флагов, заданных параметром f

Ввод/Вывод

right

Установка флага right

Вывод

scientific

Установка флага scientific

Вывод

setbase (int основание)

Задание основания системы счисления

Ввод/Вывод

setfill(int ch)

Задание символа заполнения ch

Вывод

setiosflagsffmtflags/)

Установка флагов, заданных параметром f

Ввод/Вывод ,

setprecision(int p)

Задание числа цифр точности равным р

Вывод

setw(i(it w)

Задание ширинля равным wпозиций

Вывод

showbase

Установка флага showbase

Вывод

showpoint

Установка флага showpoint

Вывод

showpos

Установка флага showpos

Вывод

skipws

Установка флага skipws

Ввод

unitbuf

Установка флага unitbuf

Вывод

uppercase

Установка флага uppercase

Вывод

Пропуск начальных пробелов

Ввод

Запомните, что манипулятор ввода/вывода влияет только на поток, частью которого является выражение ввода/вывода, содержащего манипулятор. Манипуляторы ввода/вывода не влияют на все, открытые в данный момент, потоки.

Как отмечалось в предыдущем главным преимуществом манипуля-

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

Если вы с помощью манипулятора хотите установить конкретные флаги формата, используйте функцию setiosflags(). Этот манипулятор реализует ту же функцию, что и функция-член setf(). Для сброса флагов формата используйте манипулятор resetiosflags(). Этот манипулятор эквивалентен функции unsetf().



Глава 8. Введение в систему ввода/вывода C++ 257

Примеры I

\. В этой программе представлено несколько манипуляторов ввода/вывода:

ttinclude <io3tream> . ,

ttincludt <iomanip>

using namespace std; . ...

int itiainO

! . ...

cou-- hex 10 endl;

cout oct 10 cout

cout 100 привет endl; return 0;

После выполнения программы на экран выводится следующее:

64 .-

ХХХХХХХ144 привет

2. Здесь представлена другая версия программы, в которой на экран выводится таблица квадратов и квадратных корней чисел от 2 до 20. В этой версии вместе вдй-членов и флагов формата используются манипуляторы ввода/вывода.

/* В этой версии для вывода таблицы квадратов доатных корней используются манипуляторы

ttinclude <iostream>

<iomanip>

finclude <cmath>

using namespace std; int

double x; cout

cou--; x sqrt(x) хгХпЧп ;

for(x = 2.0; <= 20.0 +) {

cout x

cout sqrt(x)

cout



1 ... 80 81 82 [ 83 ] 84 85 86 ... 227

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