Стани форматування

Стани форматування управляють появою чисел при виконанні операції вставки у вихідний потік і форматуванням при виконанні операції зчитування із вхідного потоку. Стани форматування встановлюються за допомогою різних флагів, які можуть бути змінені за допомогою методів flags(), setf() і unsetf(). Флаги форматування можуть бути встановлені за допомогою методу setf(). Існують такі флаги:

 

skipws Якщо встановлено цей флаг, то порожні проміжки при введенні за допомогою операції << будуть опускатися.
left, right, internal Управляють доповненням значення символом доповнення при лівому або правому вирівнюванні. Ці три біти становлять статичне поле ios::adjustfield.
dec, oct, hex Управляють системою числення, що використовується при виведенні цілих типів. За замовчуванням при вставці вибирається десяткова система числення, а для витягу – формати запису, використовувані в С++ для запису цілих констант. Ці біти становлять статичне поле ios::basefield.
showbase Якщо встановлено цей біт, то при виведенні цілих чисел указується система числення. Числа, що починаються з 0, – це вісімкові числа, з 0х або 0Х – шістнадцяткові.
showpoint Якщо встановлено цей біт, то при відображенні чисел із плаваючою крапкою виводиться десяткова крапка й хвостові нулі.
showpos Якщо встановлено цей біт, то позитивні цілі числа будуть виводитися зі знаком ‘+’.
scientific, fixed Якщо встановлено біт scientific, то при вставці значень із плаваючою крапкою буде використовуватися так званий науковий запис. Якщо встановлено біт fixed, то після десяткової крапки встановлюється кількість цифр, задана методом precision(). Ці біти становлять статичне поле ios::floatfield.
uppercase Якщо встановлено цей біт, то при виведенні шістнадцяткових значень буде використовуватися прописна Х, а при виведенні значень із плаваючою крапкою – прописна Е.

 

long flags();

– повертає поточні флаги форматування.

2. Установка й скидання флагів форматування

long flags(long);

– установлює зазначені флаги форматування й повертає їхнє попереднє значення.

 

long oldFlags = cout.flags();

// змінюються якісь флаги

cout.flags(oldFlags);

 

long setf(long bitFlags);

– включає зазначені флаги форматування й повертає їхнє попереднє значення.

 

long oldFlags = cout.setf(ios::showbase);

 

long setf(long bitFlags, long bitField);

– очищає зазначені бітові поля, потім установлює зазначені флаги й повертає їхнє попереднє значення. Повинна використовуватися для бітових флагів ios::adjustfield, ios::basefield або ios::floatfield.

 

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

 

long unsetf(long);

– виключає зазначені флаги форматування й повертає їхнє попереднє значення.

 

cout.unsetf(ios::showbase & ios::uppercase);

 

ios& setiosflags(long);

– те ж, що й потоковий метод flags(), за винятком того, що setiosflags() – це потоковий маніпулятор.

 

cout << setiosflags(ios::showpos);

 

ios& resetiosflags(long);

– те ж, що й потоковий метод unsetf(), за винятком того, що resetiosflags() – це потоковий маніпулятор.