|
Программирование >> Структурное программирование
main ( { char buffer[SIZE]; cout << Введите предложение: << endl; cin.read(buffer, 20); cout endl Введенное предложение: endl; cout.write(buffer, cin.gcount()); cout endl; return 0; Введите предложение: Использование функций-элементов read, write и gcount Введенное предложение: Использование функци Рис. 11.15. Неформатированный ввод-вывод с помощью функций-элементов read, gcount и write 11.6.1. Манипуляторы потоков dec, oct, hex и setbase, задающие основание чисел Целые числа обычно интерпретируются как десятичные (с основанием 10). Для изменения основания интерпретации целых чисел в потоке запишите манипулятор hex, чтобы установить шестнадцатеричный формат представления элементов данных (с основанием 16), или запишите манипулятор oct, чтобы установить восьмеричный формат представления данных (с основанием 8). Запишите манипулятор dec для возврата к основанию потока 10. Основание потока может быть также изменено с помощью манипулятора потока setbase, который принимает один целый параметр со значениями 10, 8 или 16, задающими соответствующие основания системы счисления. Поскольку манипулятор setbase принимает параметр, он называется параметризованным манипулятором потока. Использование манипулятора set-base или любого другого параметризованного манипулятора требует включение заголовочного файла <iomaiiip.h>. Основание потока остается установленным до тех пор, пока оно не будет изменено явным образом. На рис. 11.16 показано использование манипуляторов потока hex, oct, dec и setbase. figll 15.cpp Неформатированный ввод-вывод с помощью функций-элементов read, gcount и write, iinclude <iostream.h> const int SIZE = 80; return 0; Введите десятичное число: 20 20 в шестнадцатеричном формате равно 14 20 в восьмеричном формате равно 24 20 в десятичном формате равно 20 Рис. 11.16. Использование манипуляторов потока hex, oct, dec и setbase 11.6.2. Точность чисел с плавающей запятой (precision, setprecision) Мы можем управлять точностью печатаемых чисел с плавающей запятой, т.е. числом разрядов справа от десятичной точки, используя манипулятор потока precision или функцию-элемент setprecision. Вызов любой из этих установок точности действует для всех последующих операций вывода до тех пор, пока не будет произведена следующая установка точности. Функция-элемент precision не имеет никаких аргументов и возвращает текущее значение точности. Программа, приведенная на рис. 11.17, использует как функцию-элемент precision, так и манипулятор setprecision для печати таблицы корня квадратного из числа 2 с точностью, варьирующейся от О до 9. Отметим, что точность О имеет особое значение. Она восстанавливает точность по умолчанию, равную б. 11.6.3. Ширина поля (setw, width) Функция-элемент width класса ios устанавливает ширину поля (т.е. число символьных позиций, в которые значение будет выведено, или число символов, которые будут введены) и возвращает предыдущую ширину поля. Если обрабатываемые значения имеют меньше символов, чем заданная ширина поля, то для заполнения лишних позиций используются заполняющие символы: Если число символов в обрабатываемом значении больше, чем заданная ширина поля, то лишние символы не отсекаются и число будет напечатано полностью. Установка ширины поля влияет только на следующую операцию figll 16.cpp Использование манипуляторов потока hex, oct, dec и setbase. iclude <iostream.h> #include <iomanip.h> main () flS { int n; cout << Введите десятичное число: ; cin >> n; cout << n << в шестнадцатеричном формате равно << hex n endl << dec n << в восьмеричном формате равно oct << n endl setbase(10) n в десятичном формате равно n << endl; поместить или взять; затем ширина поля устанавливается неявным образом на О, т.е. поле для представления выходных значений будут просто такой ширины, которая необходима. Функция width, не имеющая аргументов, возвращает текущую установку. figll 17.cpp Управление точностью печати значений с плавающей запятой #include <iostream.h> #include <iomanip.h> #include <math.h> main() { double root2 = sqrt(2.0); cout << Корень квадратный из 2 с точностью О - 9. << endl << Точность, установлена с помощью функции-элемента precision: endl; for (int places = 0; places <= 9; places++) { cout.precision(places); cout << root2 << endl; cout << endl Точность установлена с помощью манипулятора setprecision: endl; for (places = 0; places <= 9; places++) cout setprecision(places) root2 endl; return 0; Корень квадратный из 2 с точностью О - 9. Точность, установлена с помощью функции-элемента precision: 1.414214 1.4 1.41 1.414 1.4142 1.41421 1.414214 1.4142136 1.41421356 1.414213562 Точность, установлена с помощью манипулятора setprecision: 1.414214 1.41 1.414 1.4142 1.41421 1.414214 1.4142136 1.41421356 1.414213562 Рис. 11.17. Управление точноаью печати значений с плавающей запятой
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |