Задача этой книги дать краткое и четкое изложение языка С++ в соответствии со стандар том iso/iec 14882. Она предназначена для студентов, изучающих язык «с нуля»



Download 2 Mb.
bet156/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   152   153   154   155   156   157   158   159   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Форматирование данных


 ïîòîêîâûõ êëaññaõ ôîðìaòèðîâaíèå âûïîëíяåòñя òðåìя ñïîñîáaìè — ñ ïîìî- ùüþ ôëaãîâ, ìaíèïóëяòîðîâ è ôîðìaòèðóþùèõ ìåòîäîâ.


Флаги и форматирующие методы


Ôëaãè ïðåäñòaâëяþò ñîáîé îòäåëüíûå áèòû, îáúåäèíåííûå â ïîëå x_flags òèïa
lOng êëañña iOs. Ôëaãè ïåðå÷èñëåíû â òaáë. 10.1.
Таблица 10.1. Флаги форматирования



Флаг

Положение

Умолчание

Описание действия при установленном бите

skipws

0x0001

+

Ïðè èçâëå÷åíèè ïðîáåëüíûå ñèìâîëû èãíîðèðóþòñя

left

0x0002




Âûðaâíèâaíèå ïî ëåâîìó êðaþ ïîëя

right

0x0004

+

Âûðaâíèâaíèå ïî ïðaâîìó êðaþ ïîëя

internal

0x0008




Çíaê ÷èñëa âûâîäèòñя ïî ëåâîìó êðaþ,
÷èñëî — ïî ïðaâîìó. Ïðîìåæóòîê çaïîëíяåòñя ñèìâîëaìè x_fill (ñì. íèæå), ïî óìîë÷aíèþ ïðîáåëaìè

deC

0x0010

+

Äåñяòè÷íaя ñèñòåìa ñ÷èñëåíèя

OCt

0x0020




Âîñüìåðè÷íaя ñèñòåìa ñ÷èñëåíèя

hex

0x0040




Øåñòíaäöaòåðè÷íaя ñèñòåìa ñ÷èñëåíèя

shOwbase

0x0080




Âûâîäèòñя îñíîâaíèå ñèñòåìû ñ÷èñëåíèя (0x äëя øåñòíaäöaòåðè÷íûõ ÷èñåë è 0 äëя âîñüìåðè÷íûõ)

shOwpOint

0x0100




Ïðè âûâîäå âåùåñòâåííûõ ÷èñåë ïå÷aòaòü äåñяòè÷íóþ òî÷êó è äðîáíóþ ÷añòü

upperCase

0x0200




Ïðè âûâîäå èñïîëüçîâaòü ñèìâîëû âåðõíåãî ðåãèñòða

shOwpOs

0x0400




Ïå÷aòaòü çíaê ïðè âûâîäå ïîëîæèòåëüíûõ
÷èñåë

sCientifiC

0x0800




Ïå÷aòaòü âåùåñòâåííûå ÷èñëa â ôîðìå ìaíòèññû ñ ïîðяäêîì

fixed

0x1000




Ïå÷aòaòü âåùåñòâåííûå ÷èñëa â ôîðìå ñ ôèêñèðîâaííîé òî÷êîé (òî÷íîñòü
îïðåäåëяåòñя ïîëåì x_preCisiOn, ñì. íèæå)

unitbuf

0x2000




Âûãðóæaòü áóôåðû âñåõ ïîòîêîâ ïîñëå êaæäîãî âûâîäa

stdiO

0x4000




Âûãðóæaòü áóôåðû ïîòîêîâ stdout è stderr ïîñëå êaæäîãî âûâîäa

ПРИМЕЧАНИЕ


Ôëaãè (left, right è internal), (deC, OCt è hex), a òaêæå (sCientifiC è fixed) âçaèìíî èñêëþ÷a- þò äðóã äðóãa, òî åñòü â êaæäûé ìîìåíò ìîæåò áûòü óñòaíîâëåí òîëüêî îäèí ôëaã èç êaæ- äîé ãðóïïû.

Äëя óïðaâëåíèя ôëaãaìè â êëaññå iOs åñòü ìåòîäû flags, setf è unsetf: lOng iOs::flags(lOng); — âîçâðaùaåò òåêóùèå ôëaãè ïîòîêa;


lOng iOs::flags(lOng); — ïðèñâaèâaåò ôëaãaì çía÷åíèå ïaðaìåòða;
lOng iOs::setf(lOng, lOng); — ïðèñâaèâaåò ôëaãaì, áèòû êîòîðûõ óñòaíîâëåíû
â ïåðâîì ïaðaìåòðå, çía÷åíèå ñîîòâåòñòâóþùèõ áèòîâ âòîðîãî ïaðaìåòða;
lOng iOs::setf(lOng); — óñòaíaâëèâaåò ôëaãè, áèòû êîòîðûõ óñòaíîâëåíû
â ïaðaìåòðå;
lOng iOs::unsetf(lOng); — ñáðañûâaåò ôëaãè, áèòû êîòîðûõ óñòaíîâëåíû â
ïaðaìåòðå.
Âñå ôóíêöèè âîçâðaùaþò ïðåæíèå ôëaãè ïîòîêa.
Êðîìå ôëaãîâ, äëя ôîðìaòèðîâaíèя èñïîëüçóþòñя ñëåäóþùèå ïîëя êëañña iOs: int x_width — ìèíèìaëüíaя øèðèía ïîëя âûâîäa;
int x_preCisiOn — êîëè÷åñòâî öèôð â äðîáíîé ÷añòè ïðè âûâîäå âåùåñòâåííûõ
÷èñåë;
int x_fill — ñèìâîë çaïîëíåíèя ïîëя âûâîäa.
Äëя óïðaâëåíèя ýòèìè ïîëяìè èñïîëüçóþòñя ìåòîäû width, preCisiOn è fill: int iOs::width() — âîçâðaùaåò çía÷åíèå øèðèíû ïîëя âûâîäa;
int iOs::width(int) — óñòaíaâëèâaåò øèðèíó ïîëя âûâîäa â ñîîòâåòñòâèè ñî
çía÷åíèåì ïaðaìåòða;
int iOs::preCisiOn() — âîçâðaùaåò çía÷åíèå òî÷íîñòè ïðåäñòaâëåíèя ïðè âû- âîäå âåùåñòâåííûõ ÷èñåë;
int iOs::preCisiOn(int) — óñòaíaâëèâaåò çía÷åíèå òî÷íîñòè ïðåäñòaâëåíèя ïðè
âûâîäå âåùåñòâåííûõ ÷èñåë, âîçâðaùaåò ñòaðîå çía-
÷åíèå òî÷íîñòè;
Char fill() — âîçâðaùaåò òåêóùèé ñèìâîë çaïîëíåíèя;
Char fill(Char) — óñòaíaâëèâaåò çía÷åíèå òåêóùåãî ñèìâîëa çaïîëíå-
íèя, âîçâðaùaåò ñòaðîå çía÷åíèå ñèìâîëa.
Ïåðåä óñòaíîâêîé íåêîòîðûõ ôëaãîâ òðåáóåòñя ñáðîñèòü ôëaãè, êîòîðûå íå ìî- ãóò áûòü óñòaíîâëåíû îäíîâðåìåííî ñ íèìè. Äëя ýòîãî óäîáíî èñïîëüçîâaòü âòî- ðûì ïaðaìåòðîì ìåòîäa setf ïåðå÷èñëåííûå íèæå ñòaòè÷åñnèå nîíñòaíòû êëañ- ña iOs:
adjustfield (left | right | internal) basefield (deC | OCt | hex) flOatfield (sCientifiC | fixed)

Ïðèìåð ôîðìaòèðîâaíèя ïðè âûâîäå ñ ïîìîùüþ ôëaãîâ è ìåòîäîâ:


inClude int main(){
lOng a = 1000, b = 077;
COut.width(7);
COut.setf(iOs::hex | iOs::shOwbase | iOs::upperCase); COut << a;
COut.width(7);
COut << b << endl;
dOuble d = 0.12, C = 1.3e-4; COut.setf(iOs::left);
COut << d << endl;
COut << C;
return 0;
}
 ðåçóëüòaòå ðaáîòû ïðîãðaììû â ïåðâîé ñòðîêå áóäóò ïðîïèñíûìè áóêâaìè âû- âåäåíû ïåðåìåííûå a è b â øåñòíaäöaòåðè÷íîì ïðåäñòaâëåíèè, ïîä êaæäóþ èç íèõ îòâîäèòñя ïî 7 ïîçèöèé (ôóíêöèя width äåéñòâóåò òîëüêî ía îäíî âûâîäèìîå çía÷åíèå, ïîýòîìó åå âûçîâ òðåáóåòñя ïîâòîðèòü äâaæäû). Çía÷åíèя ïåðåìåííûõ C è d ïðèæaòû ê ëåâîìó êðaþ ïîëя:
0X3E8 0X3F
0.12
0.00013



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   152   153   154   155   156   157   158   159   ...   232




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish