|
Программирование >> Инициализация объектов класса, структура
#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() имеет еще два: на целые значения он не оказывает никакого влияния; значения с плавающей точкой округляются, а не Результат:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |