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