Setprecision (точность_при_выводе_дробного_числа)

Наряду с перечисленными выше манипуляторами в С++ используются также манипуляторы setiosflags() и resetiosflags() для установки определенных глобальных флагов, используемых при вводе и выводе информации. На эти флаги ссылаются как на переменные состояния. Функция setiosflags() устанавливает указанные в ней флаги, а resetiosflags() сбрасывает (очищает) их. В приведенной ниже таблице показаны аргументы для этих функций.

Таблица 1

Значение Результат, если значение установлено
ios::skipws Игнорирование пустого пространство при вводе
ios::left Вывод с выравниванием слева
ios::right Вывод с выравниванием справа
ios::internal Заполнение пространства после знака или основания системы счисления
ios::dec Вывод в десятичном формате
ios::oct Вывод в восьмеричном формате
ios::hex Вывод в шестнадцатеричном формате
ios::boolalpha Вывод булевых значений в виде TRUE и FALSE
ios::showbase Вывод основания системы счисления
ios::showpoint Вывод десятичной точки
ios::uppercase Вывод шестнадцатеричных чисел заглавными буквами
ios::showpos Вывод знака + перед положительными целыми числами
ios::scientific Использование формы вывода с плавающей запятой
ios::fixed Использование формы вывода с фиксированной запятой
ios::unitbuf Сброс после каждой операции вывода
ios::sktdio Сброс после каждого символа

Как видно из таблицы, флаги формата объявлены в классе ios.

Пример программы, в которой использованы манипуляторы:

#include <iostream>

#include <iomanip>

using namespace std;

int main()

{ char s[]="БГУИР факультет КСиС";

cout << setw(30) << setiosflags(ios::right) << s << endl;

cout << setw(30) << setiosflags(ios::left) << s << endl;

}

Результат работы программы:

БГУИР факультет КСиС

БГУИР факультет КСиС

Наряду с манипуляторами setiosflags() и resetiosflags(), для того чтобы установить или сбросить некоторый флаг, могут быть использованы функции класса ios setf() или unsetf(). Например:

#include <iostream>

using namespace std;

#include <string.h>

int main()

{ char *s="Я изучаю С++";

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

cout << 88 << endl;

cout.unsetf(ios::uppercase);

cout << 88 << endl;

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

cout.setf(ios::dec);

int len = 10 + strlen(s);

cout.width(len);

cout << s << endl;

cout << 88 << " hello C++ " << 345.67 << endl;

return 0;

}

Результат работы программы:

0X58

0x58

Я изучаю С++

88 hello C++ 345.67

Наши рекомендации