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

cout. precision(3);       

cout <<20.1 << “\n”;                                //выводит 20.100

cout << cout. precision()<< “\n”;   // выводит 3 в качестве текущего значения

double fX=355.678;

cout. flags(ios::fixed);       

cout. precision(1);       

cout << “Number = “ << fX << “(precision is “ << cout. precision() << “)\n”;

//выводит Number =355.7 (precision is 1)

cout. precision(3);       

cout << “Number = “ << fX << “(precision is “ << cout. precision() << “)\n”;

//выводит Number =355.678 (precision is 3)

cout. precision(5);       

cout << “Number = “ << fX << “(precision is “ << cout. precision() << “)\n”;

//выводит Number =355.67800 (precision is 5)

cout. flags(ios::scientific);       

cout. precision(1);       

cout << “Number = “ << fX << “(precision is “ << cout. precision() << “)\n”;

//выводит Number =3.6e+002 (precision is 1)

cout. precision(3);       

cout << “Number = “ << fX << “(precision is “ << cout. precision() << “)\n”;

//выводит Number =3.557e+002 (precision is 3)

cout. precision(5);       

cout << “Number = “ << fX << “(precision is “ << cout. precision() << “)\n”;

//выводит Number =3.55678e+002 (precision is 5)

Чтобы не прерывать цепочку вывода, можно использовать функции-члены, непосредственно воздействующие на потоковый вывод (манипуляторы с операцией <<). Манипуляторы есть с параметрами и без параметров.

Манипуляторы с параметрами

манипулятор

назначение

setw(int nWidth=0)

устанавливает минимальную ширину следующего поля (0 – по умолчанию)

setbase (int nBase=10)

устанавливает основание системы счисления (10 – по умолчанию)

setfill (char cFill=’ ‘)

устанавливает символ-заполнитель (пробел– по умолчанию)

setprecision (int nPrec=6)

устанавливает точность (6– по умолчанию)

setiosflags (long lFlags)

устанавливает флаги формата потока

resetiosflags (long lFlags)

сбрасывает флаги формата потока

Манипуляторы без параметров

манипулятор

назначение

binary

устанавливает двоичный режим потокового ввода/вывода

text

устанавливает текстовый режим потокового ввода/вывода

dec

форматирует целые числа как десятичные

hex

форматирует целые числа как шестнадцатеричные

oct

форматирует целые числа как восьмеричные

ws

экстрактор пробельных символов

endl

переход на новую строку

ends

завершение строки нулевым символом

flush

закрывает буферы потока ввода/вывода

Примеры:

cout << oct                  <<setiosflags(ios::showbase)                  <<9 << endl;                                                // выводит 011

cout << setiosflags(ios::fixed)                   <<setprecision(2)                   <<12.12345 << endl;                                 // выводит 12.12

cout << dec                   <<setw(7)                   << setfill(‘0’) 

<< 125 << endl;                                         // выводит     0125

int Num=125;

double fX=355.678;

cout << “integer is “                  << hex                                                       //шестнадцатеричный формат                   << setiosflags(ios::uppercase)                  //верхний регистр                   << resetiosflags(ios:: showbase)              //не показывать основание с/с