Программирование >>  Инициализация объектов класса, структура 

1 ... 354 355 356 [ 357 ] 358 359 360 ... 395


#include <iostream.h>

int main() {

bool illustrate = true;

cout << объект illustrate типа bool установлен в true: ;

изменяет состояние cout так, что булевские значения печатаются в виде строк true и false

в виде строк true cout << boolalpha; cout << illustrate << \n;

Поскольку манипулятор возвращает потоковый объект, к которому он применялся, то допустимо прицеплять его к выводимым данным и другим манипуляторам. Вот как

#include <iostream.h> int main()

bool illustrate = true; cout << объект illustrate типа bool: << illustrate

<< \пс использованием boolalpha: << boolalpha << illustrate << \n;

...

можно перемежать данные и манипуляторы в нашей программе:

Вывод данных и манипуляторов вперемежку может сбить пользователя с толку. Применение манипулятора изменяет не только представление следующего за ним объекта, но и внутреннее состояние потока. В нашем примере все значения типа bool в оставшейся части программы также будут выводиться в виде строк.

Чтобы отменить сделанную модификацию потока cout, необходимо использовать

cout << boolalpha устанавливает внутреннее состояние cout << illustrate

манипулятор noboolalpha:

<< noboolalpha сбрасывает внутреннее состояние cout

Как м1 покажем, для многих манипуляторов имеются парные.

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



#include <iostream> int main()

int ival = 16; double dval = 16.0;

cout << ival: << ival

<< установлен oct: << oct << ival << \n ;

cout << dval: << dval

<< установлен hex: << hex << dval << \n ; cout << ival: << ival

<< установлен dec: << dec << ival << \n ;

Эта программа печатает следующее:

ival: 16 установлен oct: 20 dval: 16 установлен hex: 16 ival: 10 установлен dec: 16

Но, глядя на значение, мы не можем понять, в какой системе счисления оно записано. Например, 20 - это действительно 20 или восьмеричное представление 16? Манипулятор showbase выводит основание системы счисления вместе со значением с помощью следующих соглашений:

0x в начале обозначает шестнадцатеричную систему (если мы хотим, чтобы вместо строчной буквы x печаталась заглавная, то можем применить манипулятор uppercase, а для отмены - манипулятор nouppercase);

0 в начале обозначает восьмеричную систему;

отсутствие того и другого обозначает десятичную систему.

#include <iostream> int main() {

int ival = 16;

double dval = 16.0;

cout << showbase;

cout << ival: << ival

<< установлен oct: << oct << ival << \n ; cout << dval: << dval

<< установлен hex: << hex << dval << \n ;

cout << ival: << ival

<< установлен dec: << dec << ival << \n ; cout << noshowbase;

Вот та же программа, но и с использованием showbase:



ival: 16 установлен oct: 020 dval: 16 установлен hex: 16 ival: 0x10 установлен dec: 16

Манипулятор noshowbase восстанавливает состояние cout, при котором основание системы счисления не выводится.

По умолчанию значения с плавающей точкой выводятся с точностью 6. Эту величину можно модифицировать с помощью функции-члена precision(int) или манипулятора setprecision(); для использования последнего необходимо включить заголовочный

#include <iostream> #include <iomanip> #include <math.h>

int main() {

cout << Точность: << cout.precision() << endl << sqrt(2.0) << endl;

cout.precision(12);

cout << \пТочность:

<< cout.precision() << endl << sqrt(2.0) << endl;

cout << \пТочность: << setprecision(3) << cout.precision() << endl << sqrt(2.0) << endl;

return 0;

файл iomanip. precision() возвращает текущее значение точности. Например:

После компиляции и запуска программа печатает следующее:


Манипуляторы, принимающие аргумент, такие, как setprecision() и setw() , требуют включения заголовочного файла iomanip:

#include <iomanip>

Кроме описанных аспектов, setprecision() имеет еще два: на целые значения он не оказывает никакого влияния; значения с плавающей точкой округляются, а не

Результат:



1 ... 354 355 356 [ 357 ] 358 359 360 ... 395

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