|
Программирование >> Процедурные приложения
Когда установлен флаг scientificили fixed, функция precision() задает точность представления чисел с плавающей запятой, в противном случае определяет общее количество значащих цифр. Аналогичные действия выполняет манипулятор setprecision() . По умолчанию точность равна 6. Вызванная без аргументов, функция возвращает текущее значение точности. Функция width() определяет минимальную ширину поля вывода в символах. Если при выводе количество символов оказывается меньшим ширины поля, оно дополняется специальными символами-заполнителями. После каждой операции записи значение ширины поля сбрасывается в 0. Аналогичные действия выполняет манипулятор setw( ) . Вызванная без аргументов, функция возвращает текущую ширину поля. Манипуляторы setfill () , setprecision() и setw(), также являющиеся членами класса ios, относятся к категории параметризованных, и для работы с ними необходимо дополнительно подключить к программе файл IOMANIP.H. Следующая программа является написанным на C++ аналогом программы printf.c, рассмотренной в предыдущей главе. ioflags.cpp Эта программа на языке C++ демонстрирует применение флагов и функций форматирования. #include <strstrea.h> #define MAX LENGTH 20 void row (void); main{) { char с = A,psz[] = Строка для экспериментов , strbuffer[MAX LENGTH]; int ivalue = 1234; double dPi = 3.14159265; вывод символа с row(); [ 1] cout<< с; вывод ASCII-кода символа с row() ; [2] cout << (int)c; вывод символа с ASCII-кодом 90 row (); [ 3] cout << (char)90; вывод значения ivalue в восьмеричной системе row(); [4] cout << oct << ivalue; вывод значения ivalue в шестнадцатеричной системе сбуквами в нижнем регистре row (); [5] cout << hex << ivalue; вывод значения ivalue в шестнадцатеричной системе с буквами в верхнем регистре row (); [ 6] cout.setf(ios::uppercase); cout << hex << ivalue; cout.unsetf(ios::uppercase); отмена верхнего регистра символов cout<< dec; возврат к десятичной системе вывод одного символа, минимальная ширина поля равна 5, выравнивание вправо с дополнением пробелами row(); [ 7] cout.width(5); cout<< с; вывод одного символа, минимальная ширина поля равна 5, выравнивание влево с дополнением пробелами row(); [ 8] cout.width(5); cout.setf(ios::left); cout << c; cout.unsetf(ios::left); вывод строки, отображаются 2 4 символа (); [9] cout psz; вывод минимум 5-ти символов строки (); [10] cout.width(5); cout psz; вывод минимум 38-ми символов строки, выравнивание вправо с дополнением пробелами 3w(); [11] cout.width(38); cout << psz; вывод минимум 38-ми символов строки, выравнивание влево с дополнением пробелами 3w (); [12] ut.width(38); ut.setf(ios::left); ut << psz; ut.unsetf(ios::left); вывод значения ivalue, по умолчанию отображаются 4 цифры row(); [13] cout ivalue; вывод значения ivalue со знаком w (); [14] ut.setf(ios::showpos); ut << ivalue; ut.unsetf(ios::showpos) ; вывод значения ivalue минимумиз 3-х цифр, отображаются 4 цифры w (); [15] ut.width(3); cout << ivalue; вывод значения ivalue минимум из 10-ти цифр, } выравнивание вправо с дополнением пробелами row(); [16] cout.width(10); cout<< ivalue; вывод значения ivalue минимум из 10-ти цифр, выравнивание влево с дополнением пробелами row(); [17] cout.width(10); cout.setf(ios::left) ; cout << ivalue; cout.unsetf(ios::left); вывод значения ivalue минимум из 10-ти цифр, выравнивание вправо с дополнением нулями row (); [18] ut.width (10); ut.fill (0); ut << ivalue; ut.fill ( ); вывод значения dPiс форматированием по умолчанию w(); [19] ut<< dPi; вывод значения dPi, минимальная ширина поля равна 20, выравнивание вправо с дополнением пробелами w{); [20] cout.width (20); cout<< dPi; вывод значения dPi, минимальная ширина поля равна 20, выравнивание вправо с дополнением нулями row(); [21] cout.width(20); cout.fill(0); cout << dPi; cout. fill ( ); вывод значения dPi, минимальная ширина поля равна 20, выравнивание влево с дополнением пробелами row(); [22] cout.width(20); cout.setf(ios::left) ; cout<< dPi; вывод значения dPi, минимальная ширина поля равна 20, выравнивание влево с дополнением нулями row(); [23] cout.width(20); cout. fill (0); cout << dPi; cout.unsetf(ios::left); cout.fill( ); вывод 19-ти символов строки, минимальная ширина поля равна 19 row(); [24] ostrstream(strbuffer, 20).write(psz,19)<< ends; cout.width(19); cout << strbuffer; вывод первых двух символов строки row(); [25] ostrstream(strbuffer, 3).write(psz,2) << ends; cout<< strbuffer; вывод первых двух символов строки, минимальная ширина поля равна 19, выравнивание вправо с дополнением пробелами row(); [26] cout.width(19); cout << strbuffer; вывод первых двух символов строки, минимальная ширина поля равна 19, выравнивание влево с дополнением пробелами row(); [27] cout.width(19) cout .setf (ios :: left) ; cout << strbuffer; cout .unsetf (ios :: left) ; вывод значенияdPi из5-ти значащих цифр row (); [28] cout .precision (9); cout << dPi; вывод значения dPiиз 2-х значащих цифр, минимальная ширина поля равна 20, выравнивание вправо с дополнением пробелами row (); [29] cout. width (20) ; cout .precision (2); cout << dPi; выводзначенияdPi из 4-хзначащихцифр row () ; [30] cout .precision (4); cout << dPi; вывод значения dPi из 4-х значащих цифр, минимальная ширина поля равна 20, выравнивание вправо с дополнением пробелами row(); [31] cout. width(20); cout<< dPi; вывод значения dPi, минимальная ширина поля равна 20, 4 цифры после десятичной точки, выравнивание вправо Ис дополнением пробелами, научный формат (с экспонентой) row (); [32] cout . setf (ios :: scientific) ; cout. width ( 20 ); cout << dPi; cout. unset f (ios: : scientific ); return (0); } void row(void) { static int In = 0; cout << \n [ ; cout.width(2) ; cout<< ++ln<< ] ; } Результат работы программы будет выглядеть следующим образом: 206
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |