Aizsērēšanas objekts C ++ ir klases ostream objekts. Tas ir saistīts ar standarta C kļūdas izvades straumes stderr.
clog
un cerr
abi ir saistīti ar stderr
, bet tas atšķiras no cerr
tā, ka straumes clog
tiek buferētas un nav automātiski saistītas cout
.
Buferētā izeja ir efektīvāka nekā neiesaukta izeja. Buferētas izejas gadījumā visa izeja tiek saglabāta mainīgajā un ierakstīta diskā uzreiz. Lai nepiegādātu izvadi, mums jāturpina rakstīt uz disku.
Buferētā izvade nav ieteicama kritisku kļūdu gadījumā. Sistēmas avārijas gadījumā var rasties situācija, ka izeja joprojām bija buferī un netika ierakstīta diskā, un kļūdas ziņojumu nevar izgūt. Mēs nevaram atļauties zaudēt datus par kļūdām sistēmas avārijas gadījumā, tāpēc kritiskās kļūdas turpinām rakstīt diskā, kaut arī tas notiek lēnāk.
clog
parasti izmanto mežizstrādes vajadzībām. Nekritisku notikumu reģistrēšanai svarīgāka clog
ir efektivitāte, tāpēc priekšroka tiek dota cerr.
aizsprostojuma deklarācija
ārējais ostream aizsērējums;
Tas ir definēts galvenes failā "> header file.
clog
Objekts tiek nodrošināta inicializēts laikā vai pirms pirmo reizi objekts tipa ios_base::Init
konstrukciju. clog
nav piesaistīts nevienai citai straumei.
"C" aizsērējumā attiecas uz "rakstzīmi", tātad aizsērējums nozīmē "rakstzīmju žurnāls".
Nosprostojuma objekts tiek izmantots kopā ar ievietošanas operatoru (<<), lai parādītu rakstzīmju plūsmu. Vispārējā sintakse ir šāda:
aizsprostot << varName;
vai
aizsērēt << "Some String";
Ekstrakcijas operatoru var izmantot vairākas reizes, izmantojot mainīgo, virkņu un manipulatoru kombināciju (piemēram endl
):
aizsērēt << var1 << "Some String" << var2 << endl;
Piemērs: Kā darbojas aizsērējums?
#include #include using namespace std; int main() ( char fileName() = "data.txt"; ifstream infile(fileName); if(infile) cout << infile.rdbuf(); else clog << "Error while opening the file " << fileName << endl; return 0; )
Šajā programmā žurnāla datu straumēšanai tiek izmantots aizsērējums, jo šajā gadījumā kļūda nav kritiska lietojumprogrammai. Tātad buferizētas aizsērējuma izejas izmantošana ir efektīvāka
Palaidot programmu, izeja būs (ja faila atvēršanā ir kļūda):
Kļūda, atverot failu data.txt