Форматиране на изхода в C++
Форматиране на изхода в C++ означава да се промени начина, по който потоците в C++ изкарват текст на екрана или във файл. За да го направите, трябва да използвате член-функцията на ostream setf. Тя е дефинирана по следния начин:
long setf(long flags);
Параметърът flags показва кои флагове искате да зададете (може да са няколко, комбинирани с битово ИЛИ). Таблица за различните флагове има малко по-долу. Функцията връща предишното състояние на флаговете.
Ако искате да премахнете зададен флаг, може да използвате другата член-функция unsetf:
long unsetf(long flags);
Отново параметъра flags показва кои флагове искате да премахнете, а функцията връща предишното състояние на флаговете.
Следва таблицата за възможните флагове:
| Бит | Име | Обяснение |
| 1 | left | подравнява вляво на полето |
| 2 | right | подравнява вдясно на полето |
| 3 | internal | слага знака (+/-) в началото на полето, а самото число в края му |
| 4 | dec | преобразува изкарваните числа в десетична бройна система |
| 5 | oct | преобразува изкарваните числа в осмична бройна система |
| 6 | hex | преобразува изкарваните числа в шестнайсетична бройна система |
| 7 | showbase | показва бройната система (0 пред осмични и 0x пред шестнадесетични числа) |
| 8 | showpoint | винаги показва десетична точка |
| 9 | uppercase | шестнадесетичните букви (a,b,c,d,e,f) се изписват главни |
| 10 | showpos | винаги показва знака на числото (дори да е +) |
| 11 | scientific | представя числата в „научен“ формат (с експонента) |
| 12 | fixed | представя числата с фиксирана десетична точка |
| 13 | initbuf | при всяко изкарване на текст се flush-ват буферите |
| ? | showalpha | bool-числата се показват като true и false вместо 1 и 0 |
Забележка: преди всеки флаг трябва да поставите „ios::“
Например: setf(ios::showpoint|ios::fixed);
Има и други начини за форматиране, които не са флагове, и се задават по следния начин:
<ostream object> << <modificator>;
Следва таблица за възможните модификатори:
| Име | Обяснение |
|---|---|
| dec | десетично преобразуване |
| hex | шестнайсетично преобразуване |
| oct | осмично преобразуване |
| endl | изкарва нов ред и flush-ва изхода |
| ends | изкарва символа край на низ '\0' |
| flush | изпразва буфера на потока |
| setbase(int) | променя базата на числото |
| resetiosflags(long) | нулира ios флагове |
| setiosflags(long) | задава ios флагове |
| setfill(int) | задава символ за запълване на празното място в полето |
| setprecision(int) | задава прецизност за дробните числа |
| setw(int) | задава минималната дължина на полето |