Using namespace std;

Int main ()

{

setlocale (0, "");

cout << 255 << endl; //На экране видим 255 -по умолчанию установлен флаг dec

cout.setf (ios :: hex); //Включаем флагhex- хотим видеть на экране ff

cout << 255 << endl; //На экране видим 255- изменений не произошло

system ("Pause");

Return 0;

}

 

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

 

cout.unsetf (ios :: dec); //Отключаем флагdec

cout.setf (ios :: hex); //Включаем флагhex- хотим видеть на экране ff

cout << 255 << endl; //На экране видим ff- то, что хотели

Среди всех флагов можно выделить три группы, в каждой из которых флаги управляют одной и той же характеристикой ввода / вывода, но являются взаимоисключающими. Флагам каждой из этих групп в классе ios присвоены обобщающие имена:

 

Группа Флаги Обобщающее имя
Флаги основания систем счисления dec, oct, hex basefield
Флаги выравнивания left, right, internal adjustfield
Флаги формата вещественных значений scientific, fixed floatfield

 

Обобщающие имена групп удобно использовать для выполнения операции со всеми флагами группы, например, для сброса всех флагов группы:

 

cout.unsetf (ios ::basefield); //Отключаем флагиdec, oct, hexза один прем

 

Более того, функцию setfможно использовать с двумя параметрами:

 

setf (новые флаги, маска)

 

В этом случае функция setfустанавливает только те флаги, которые одновременно присутствуют и в первом и во втором параметре, а те флаги, которые присутствуют во втором параметре, но отсутствуют в первом, будут сброшены. Это дает возможность отключать и включать флаги за один вызов функции setf. Например, для установки любого флага из группы basefield достаточно использовать всего один оператор:

cout.setf (ios :: hex, ios :: basefield);

Здесь второй параметр содержит три флага: dec, oct, hex. Первый параметр содержит флаг hex. Этот флаг будет установлен, а флаги dec и oct будут сброшены.

В классе cout имеются еще несколько функций управляющих форматом вывода данных. К ним относятся:

· precision - определяет точность представления вещественных значений;

· width - устанавливает ширину поля вывода;

· fill - определяет символ заполнения при выводе данных.

Примеры использования этих функций

 

Пример 1.

 

cout.width (10);//Ширина поля вывода 10 позиций

cout << 123 << endl; // На экран выведено 7 пробелов и число 123

cout.fill (‘.’); // Символ заполнения ‘.’

cout.width (10);//Ширина поля вывода 10 позиций

cout << 123 << endl;// На экран выведено …….123

 

Пример 2

 

cout.width (10);//Ширина поля вывода 10 позиций

cout.setf (ios :: fixed);//Вывод вещественных значений с фиксированной точкой

cout.precision (3);//Ширина поля вывода 10 позиций

cout << 1.2345 << endl; // На экран выведено 7 пробелов и число 1.234

cout.fill (‘.’); // Символ заполнения ‘.’

cout.width (10);//Ширина поля вывода 10 позиций

cout << 123 << endl;// На экран выведено …….123

 








Дата добавления: 2019-02-07; просмотров: 221;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.