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



Download 2 Mb.
bet161/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   157   158   159   160   161   162   163   164   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Ошибки потоков


 áaçîâîì êëaññå iOs îïðåäåëåíî ïîëå state, êîòîðîå ïðåäñòaâëяåò ñîáîé ñîñòîя- íèå ïîòîêa â âèäå ñîâîêóïíîñòè áèòîâ:
enum iO_state{
gOOdbit = 0x00, // Íåò îøèáîê
eOfbit = 0x01, // Äîñòèãíóò êîíåö ôaéëa
failbit = 0x02, // Îøèáêa ôîðìaòèðîâaíèя èëè ïðåîáðaçîâaíèя badbit = 0x04, // Cåðüåçíaя îøèáêa, ïîñëå êîòîðîé
// ïîëüçîâaòüñя ïîòîêîì íåâîçìîzíî hardfail = 0x08 // Íåèñïðaâíîñòü îáîðóäîâaíèя
};
Cîñòîяíèåì ïîòîêa ìîæíî óïðaâëяòü ñ ïîìîùüþ ïåðå÷èñëåííûõ íèæå ìåòîäîâ è îïåðaöèé:
int rdstate() — âîçâðaùaåò òåêóùåå ñîñòîяíèå ïîòîêa;
int eOf() — âîçâðaùaåò íåíóëåâîå çía÷åíèå, åñëè óñòaíîâëåí ôëaã eofbit;
int fail() — âîçâðaùaåò íåíóëåâîå çía÷åíèå, åñëè óñòaíîâëåí îäèí èç ôëaãîâ failbit, badbit èëè hardfail;
int bad() — âîçâðaùaåò íåíóëåâîå çía÷åíèå, åñëè óñòaíîâëåí îäèí èç ôëaãîâ badbit èëè hardfail;
int gOOd() — âîçâðaùaåò íåíóëåâîå çía÷åíèå, åñëè ñáðîøåíû âñå ôëaãè îøèáîê;
vOid Clear(int = 0) — ïaðaìåòð ïðèíèìaåòñя â êa÷åñòâå ñîñòîяíèя îøèáêè, ïðè îòñóòñòâèè ïaðaìåòða ñîñòîяíèå îøèáêè óñòaíaâëèâaåò- ñя 0;
OperatOr vOid*() — âîçâðaùaåò íóëåâîé óêaçaòåëü, åñëè óñòaíîâëåí õîòя áû îäèí áèò îøèáêè;
OperatOr !() — âîçâðaùaåò íåíóëåâîé óêaçaòåëü, åñëè óñòaíîâëåí õîòя áû îäèí áèò îøèáêè.
Äaëåå ïðèâåäåíû ÷añòî èñïîëüçóåìûå îïåðaöèè ñ ôëaãaìè ñîñòîяíèя ïîòîêa.

// Ïðîâåðèòü, óñòaíîâëåí ëè ôëaã flag:


if(stream_Obj.rdstate() & iOs::flag)
// Cáðîñèòü ôëaã flag:
stream_Obj.Clear(rdstate() & ~iOs::flag)
// Óñòaíîâèòü ôëaã flag:
stream_Obj.Clear(rdstate() | iOs::flag)
// Óñòaíîâèòü ôëaã flag è ñáðîñèòü âñå îñòaëüíûå: stream_Obj.Clear( iOs::flag)
// Cáðîñèòü âñå ôëaãè:
stream_Obj.Clear()
Îïåðaöèя vOid*() íåяâíî âûçûâaåòñя âñяêèé ðaç, êîãäa ïîòîê ñðaâíèâaåòñя ñ 0. Ýòî ïîçâîëяåò çaïèñûâaòü öèêëû âèäa:
while (stream_Obj){
// Âñå â ïîðяäêå, ìîzíî ïðîèçâîäèòü ââîä/âûâîä
}
 ïðèâåäåííîì íèæå ïðèìåðå ïîêaçaía ðaáîòa ôóíêöèè rdstate(). Ïðîãðaììa âûâîäèò ía ýêðaí ñîäåðæèìîå òåêñòîâîãî ôaéëa, èìя êîòîðîãî çaäaåòñя â êî- ìaíäíîé ñòðîêå. Ïðè íaëè÷èè îøèáêè ôóíêöèя ñîîáùaåò îá ýòîì ïîñðåäñòâîì CheCkStatus().
inClude inClude
vOid CheCkStatus(ifstream &in); int main(int argC, Char *argv[ ]){
if(argC != 2){
COut << "Usage:
" << endl; return 1;
}
ifstream in(argv[1]); if(!in){
COut << "CannOt Open file" << argv[1] << endl; return 1;
}
Char C; while(in.get(C)){
COut << C; CheCkStatus(in);
}
CheCkStatus(in); // êîíòðîëü ôèíaëüíîãî ñîñòîяíèя in.ClOse();
return 0;
}
vOid CheCkStatus(ifstream &in){ int i;
i = in.rdstate(); if(i & iOs::eOfbit)
COut << "EOF is OCCured" << endl; else if(i & iOs::failbit)

COut << "NOt fatal input/Output errOr" << endl; else if(i & iOs::badbit)


COut << "Fatal input/Output errOr" << endl;
}



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   157   158   159   160   161   162   163   164   ...   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