C ++ aizsērējums - C ++ standarta bibliotēka

Aizsērēšanas objekts C ++ ir klases ostream objekts. Tas ir saistīts ar standarta C kļūdas izvades straumes stderr.

clogun cerrabi ir saistīti ar stderr, bet tas atšķiras no cerrtā, ka straumes clogtiek 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.

clogparasti izmanto mežizstrādes vajadzībām. Nekritisku notikumu reģistrēšanai svarīgāka clogir 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.

clogObjekts tiek nodrošināta inicializēts laikā vai pirms pirmo reizi objekts tipa ios_base::Initkonstrukciju. clognav 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

Interesanti raksti...