Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Самоучитель С++ - Шилдт Г.

Шилдт Г. Самоучитель С++ — Спб.: БВХ-Петербург, 2003. — 688 c.
ISBN 5-7791-0086-1
Скачать (прямая ссылка): samouchitelc2003.djvu
Предыдущая << 1 .. 70 71 72 73 74 75 < 76 > 77 78 79 80 81 82 .. 206 >> Следующая

Дополнением setfQ является функция imsetf(). Эта функция-член класса ios сбрасывает один или несколько флагов формата. Здесь показана ее основная форма:
void unsetf (fmtflags флаїги) ;
Флаги, заданные параметром флаги, сбрасываются. (Все остальные флаги остаются без изменений.)
Когда-нибудь вам понадобится только узнать текущее состояние флагов и при этом ничего не менять. Поскольку функции setf() и unsetf() меняют состояние одного или более флагов, в класс ios включена функция-член flags(), которая просто возвращает текущее состояние флагов формата. Здесь показан прототип этой функции:
fmtflags flags();
Функция flags() имеет и вторую форму, которая позволяет установить все„ связанные с потоком ввода/вывода, флаги формата. Флаги задаются в аргументе функции flags(). Здесь показан прототип этой версии функции:
fmtflags flags (fmtflags t) ;
Глава 8. Введение в систему ввода/вывода C++__________________________________247
При использовании этой версии функции flags() битовый шаблон / копируется в переменную для хранения связанных с потоком флагов формата; при этом перезаписывается весь предшествующий набор флагов. Функция возвращает предыдущие установки флагов формата.
1. В этом примере показано, как установить несколько флагов формата.
#include <iostream>
using namespace std;
int main {)
\
// вывод с использованием установок по умолчанию cout « 123.23 « " привет " « 100 « '\п' ; cout « 10 « ' 1 « -10 « ' \п';
¦cout « 100.0 « ' \п';
/ / теперь меняем формат
cout. unset f (ios: : dec) ; // требуется не для всех компиляторов
cout.setf(ios::hex \ ios::scientific);
cout << 123.23 « " привет " « 100 << '\n'f*
cout.setf(ios::showpos);
¦COUt « 10 « ' ' « -10 « ' \n' ;
cout.setf(ios::showpoint \ ios::fixed);
cout « 100.0;
return 0;
}
После выполнения программы на экран выводится следующее:
123.23 привет 100
10 -10
100
1.232300е+02 привет 64 a fffffff6 +100.000000
Обратите внимание, что флаг showpos влияет только на вывод десятичных значений. Он не влияет на число 10, когда оно выводится в шестнадцатеричной системе счисления. Кроме того, отметьте, что вызов функции unsetf() приводит к сбросу установленного по умолчанию флага dec. Этот вызов нужен не для всех компиляторов, а только для некоторых, для которых уста-
248
Самоучитель
C++
новка флага dec автоматически приводит к сбросу остальных флагов. Поэтому после сброса флага dec необходимо заново установить флаг hex или oct. Как правило, для лучшей переносимости программ лучше установить только то основание системы счисления, которое вы будете использовать и стереть остальные.
2. В следующей программе показано действие флага uppercase. В первую очередь устанавливаются флаги uppercase, showbase и hex. Затем выводится число 88 в шестнадцатеричной системе счисления. В этом случае символ шестнадцатеричной системы счисления "X" выводится в верхнем регистре. Далее с помощью функции unsetf() сбрасывается флаг uppercase и снова выводится шестнадцатеричное число 88. Теперь символ "х" оказывается в нижнем регистре.
ttinclude <iostream>
using namespace std;
int main ( )
f
cout. unsetff (ios:: dec);
cout.setf(ios::uppercase I ios::showbase I ios::hex); cout « 88 « r\n’; cout.unsetf (ios::uppercase) г cout « 88 « ’\n';
return 0 ;
3. В следующей программе для вывода состояния флагов формата потока cout используется функция flagsQ. Обратите особое внимание на функцию showflagsO- Она может вам пригодиться при разработке собственных программ.
#include <iostream> using namespace std;
void showflags() ;
int main ( )
{
// отображение состояния флагов формата по умолчанию showflagsO;
cout. set f{ ios :: oct I ios :: showbase I ios:: fixed); showflags {) ;
return 0;
Главай. Введение в систему ввода /вывода C++___________________________
// Эта функция выводит состояние флагов формата void showflags()
{
ios::fmtflags f;
f = cout.flags() ; // получение установок флагов формата
if (f & ios::skipws) cout << "skipws установлен\п" ; else cout « Mskipws сброшенХп";
if(f & ios::left) cout « "left установлен\п";
else cout << "left сброшен\n'T;
if(f & ios::right) cout « "right установлені";
else cout « "right сброшенХп" ;
if(f & ios::internal) cout << "internal устаноален\пм;
else cout << "internal сброшенХп" ;
if(f & ios:: dec) cout << "dec установлеи\пн;
¦else cout << "dec сброшенХп11;
if {f & ios::oct) cout « lroct установлен\n";
else cout « "oct сброшенХп" ;
if {f Sc ios: :hex) cout « "hex устанОЕленХп11;
else cout << "hex сброшен\п";
if{f & ios::showbasej cout « ’’showbase устако5лен\пм;
else cout << "showbase сброшенХп";
if(f & ios : : showpoint) cout « "showpoint установлен\n";
¦else cout << "showpoint сброшенХп";
Предыдущая << 1 .. 70 71 72 73 74 75 < 76 > 77 78 79 80 81 82 .. 206 >> Следующая