Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
}
В этом примере установка флага 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
Дата публикования: 2014-11-26; Прочитано: 180 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!