Файлы. Общая концепция организации ввода-вывода данных в С++. Средства класса ios, обеспечивающие точную настройку вывода, страница 8

cout << “floating-point number is”<< fX<< “\n”; //floating-point number is +355.113000

iFlags= cout.flags();  //получить флаги

if (iFlags & ios::dec)

cout << “integer output uses base 10\n”;

else if(iFlags & ios::hex)

cout << “integer output uses base 16\n”;

else

cout << “integer output uses base 8\n”;     // integer output uses base 8

Функция-член setf

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

long setf (long iFlags);

long setf (long iFlags, long iMask);

«Немаскированная» версия функцииsetfуправляет флагами формата, которые принимают только одно из двух значений (включено/выключено).

Версия функции- члена setfс маской управляет флагами формата, которые принимают больше двух значений. Параметр iFlags обозначает комбинацию форматных флагов. Параметр iMask определяет маску, которая соответствует форматным флагам.

Значения параметра iMask версии функции- члена setfс маской:

значения параметра iMask

назначение

ios::adjustfield

маска для битов флага дополнения (слева, справа или внутри)

ios::basefield

маска для битов флага основания системы счисления (десятичная, восьмеричная, шестнадцатеричная)

ios::floatfield

биты маски для флага формата с плавающей точкой (научный или фиксированный)

Примеры:

cout.setf (ios::hex, ios::basefield); //версия с маской

cout.setf (ios::uppercase);               //версия без маски

cout << 15 << “\n”;                         //выводит F

cout.setf (ios::showbase);               //версия без маски

cout.setf (ios::oct, ios::basefield);  //версия с маской

cout << 8 << “\n”;                            //выводит 010

cout.setf (ios::hex, ios::basefield); //версия с маской

cout << 15 << “\n”;                         //выводит 0xF

int nNum=16 ;

double fx=355.113 ;

long iFlags ;

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

cout <<nNum << “(base 10) =”;                              //16 (base 10)=

cout.setf (ios::showbase);                                      //версия без маски

cout.setf (ios::hex, ios::basefield);                        //версия с маской

cout <<nNum << “(base 16) =”;                              //0x10 (base 16)=

cout.setf (ios::oct, ios::basefield);                    //версия с маской

cout << nNum << “(base 8) \n”;                              //020 (base 8)

cout. setf ( ios:: showpos);

cout. setf (ios:: scientific, ios:: floatfield);

cout << “floating-point number is”<< fX<< “\n”; //floating-point number is +3.551130e+002

iFlags= cout.setf(ios:: fixed, ios:: floatfield);  //получить флаги

cout << “floating-point number is”<< fX<< “\n”; //floating-point number is +355.113000

if (iFlags & ios::dec)

cout << “integer output uses base 10\n”;

else if(iFlags & ios::hex)

cout << “integer output uses base 16\n”;

else

cout << “integer output uses base 8\n”;     // integer output uses base 8

Функция-член unsetf

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

long unsetf (long iFlags);

Параметр iFlags определяет флаги, которым нужно назначить значения по умолчанию.

Несколько значений параметра iFlags функции unsetf могут объединяться в аргументе операцией | (поразрядного или)

Примеры:

cout.flags (ios::hex | ios::uppercase | ios:: showbase);

cout <<15 << “\n”;                                //выводит 0хF

cout. unsetf ( ios:: uppercase); //устанавливает флаг верхнего регистра «по умолчанию»

cout <<15 << “\n”;                                 //выводит 0хf

cout. unsetf ( ios:: showbase); //устанавливает флаг системы счисления «по умолчанию»