Форматиране на изхода в 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) | задава минималната дължина на полето |