|
Программирование >> Расширенная версия языка c++
Манипуляторы ввода/вывода ются специальными функциями формата ввода/вывода, которые, в отличие от функций - членов класса 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++
Таблица 8.1 (продолжение)
Запомните, что манипулятор ввода/вывода влияет только на поток, частью которого является выражение ввода/вывода, содержащего манипулятор. Манипуляторы ввода/вывода не влияют на все, открытые в данный момент, потоки. Как отмечалось в предыдущем главным преимуществом манипуля- торов по сравнению с функциями - членами класса 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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |