C ++ clog - Biblioteca standard C ++

Obiectul înfundat în C ++ este un obiect din clasa ostream. Este asociat cu fluxul standard de ieșire de eroare C stderr.

clogși cerr, ambele sunt asociate cu stderr, dar diferă de cerrîn sensul că fluxurile din clogsunt tamponate și nu sunt legate automat cu cout.

Ieșirea tamponată este mai eficientă decât ieșirea nebuferată. În cazul ieșirii tamponate, toate ieșirile sunt salvate într-o variabilă și scrise pe disc simultan. Pentru ieșirea fără tampon, trebuie să continuăm să scriem pe disc.

Ieșirea tamponată nu este preferată pentru erorile critice. În caz de blocare a sistemului, poate apărea o situație în care ieșirea a fost încă în tampon și nu a fost scrisă pe disc și mesajul de eroare nu poate fi recuperat. Nu ne putem permite să pierdem datele de eroare în caz de blocare a sistemului, așa că continuăm să scriem erorile critice pe disc, deși este mai lent.

clogeste utilizat în mod obișnuit în scopuri de înregistrare. Pentru înregistrarea non-critică a evenimentelor, eficiența este mai importantă, așa că clogeste de preferat închiderea.

declarație de înfundare

 colț ostream extern;

Este definit în fișierul antet "> fișierul antet.

clogObiectul este asigurat inițializat în timpul sau înainte de prima dată când un obiect de tip ios_base::Initeste construit. clognu este legat de niciun alt flux.

„C” din înfundare se referă la „caracter”, deci înfundare înseamnă „jurnal de caractere”.

Obiectul clog este utilizat împreună cu operatorul de inserare (<<) pentru a afișa un flux de caractere. Sintaxa generală este:

 clog << varName;

sau

 înfunda << „Un șir”;

Operatorul de extracție poate fi folosit de mai multe ori cu o combinație de variabile, șiruri și manipulatoare (cum ar fi endl):

 clog << var1 << "Some String" << var2 << endl;

Exemplu: Cum funcționează înfundarea?

 #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; )

În acest program, blocarea este utilizată pentru a transmite în flux datele jurnalului, deoarece eroarea în acest caz nu este critică pentru aplicație. Deci, utilizarea ieșirii tamponate a înfundării este mai eficientă

Când rulați programul, ieșirea va fi (dacă există o eroare la deschiderea fișierului):

 Eroare la deschiderea fișierului data.txt

Articole interesante...