В потоках С++ имеются флаги форматирования. Они задают, каким образом форматируется ввод и вывод. Флаги являются битовыми полями, хранящимися в переменной типа long. Одной из функций, используемых для установки флагов, является setf ( ). Она перегружена. Один из ее заголовков имеет вид
longios::setf( long );
Она устанавливает флаги, биты которых установлены в параметре, и возвращает прежнее значение всех флагов.
Функция longios :: unsetf (long) сбрасывает флаги, биты которых установлены в параметре; возвращает прежнее значение всех параметров.
При установке можно указывать несколько флагов, разделяя их вертикальной чертой.
Например,
cout.setf (ios :: showbase | ios :: hex);
cout.seft (ios::fixed );
ios::right - данные при выводе выравниваются по правой границе поля.
ios::dec, ios::oct, ios::hex - числа выводятся соответственно в "10", "8" или "16" системах исчисления.
ios::showbase - при выводе чисел добавляется индикатор основания (Ø х для 16-ричных и Ø для 8-ричных).
ios::fixed, ios::scientific - вещественные числа выводятся соответственно с фиксированной или плавающей точкой.
ios::uppercase - буквы от А до F в 16-ричных числах выводятся в верхнем регистре.
Это функции, которые можно включать в цепочку последовательных операций помещения и извлечения. Это удобный способ управления флагами потока.
Однако применение манипуляторов не ограничивается модификациями формата ввода/вывода.
За исключением setw, изменения, внесенные манипуляторами, сохраняются до следующей установки.
Манипуляторы, не требующие указания аргументов, называются простыми. Наиболее часто употребляются следующие предопределенные простые манипуляторы:
endl- помещает в выходной поток символ новой строки (\' n') и вызывает
манипулятор flush. Применяется перед вводом символа или символьной строки.
еnds-помещает в выходной поток нулевой символ ('\ Ø'). Обычно используется для указания конца строки.
flush - принудительно записывает все выходные данные на соответствующие физические устройства.
dec,oct,hex - устанавливают соответственно "10", "8", "16" системы счисления.
Примеры:
cout << "hexx =" << hex << x <<' \ n';
Значение х выводится в 16-ричной системе.
cout << "oct x = " << oct << x <<' \ n';
Вывод х в 8-ричной системе.
char name [2Ø];
cout << "Введите имя" <<endl;
cin >> name;
Здесь перед вводом строки символов используется манипулятор endl.
Требуют спецификации аргументов. Некоторые из них приведены ниже.
setbase(int_b) - задает основание преобразования.
setfill(int_f) - задает заполняющий символ.
setprecision(int_n) - задает значение внутренней переменной n точности
вещественных чисел.
setw(int_w) - задает ширину поля.
Шаблоны позволяют давать обобщенные в смысле произвольности используемых типов определения классов и функций. Эти определения служат компилятору основой для классов или функций, создаваемых для конкретного типа данных. Шаблоны часто называют параметризованными типами. Они позволяют компилировать новые классы или функции, задавая типы в качестве параметров. Имеются шаблоны классов и шаблоны функций. Более часто используются шаблоны функций, которые и будут рассмотрены ниже.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.