C ++ clog - Βασική βιβλιοθήκη C ++

Το αντικείμενο απόφραξης στο C ++ είναι ένα αντικείμενο της τάξης ostream. Συνδέεται με την τυπική ροή εξόδου σφάλματος C stderr.

clogΚαι cerr, και οι δύο συνδέονται με stderr, αλλά διαφέρει από cerrτην έννοια ότι οι ροές clogείναι αποθηκευμένες σε buffer και δεν συνδέονται αυτόματα cout.

Η αποθηκευμένη έξοδος είναι πιο αποτελεσματική από την έξοδο χωρίς παράδοση. Στην περίπτωση buffered output, όλη η έξοδος αποθηκεύεται σε μια μεταβλητή και εγγράφεται στο δίσκο ταυτόχρονα. Για εξερχόμενη έξοδο, πρέπει να συνεχίσουμε να γράφουμε στο δίσκο.

Η έξοδος buffer δεν προτιμάται για κρίσιμα σφάλματα. Σε περίπτωση σφάλματος του συστήματος, μπορεί να προκύψει μια κατάσταση όπου η έξοδος ήταν ακόμα σε buffer και δεν γράφτηκε στο δίσκο και το μήνυμα σφάλματος δεν μπορεί να ανακτηθεί. Δεν μπορούμε να χάσουμε δεδομένα σφαλμάτων σε περίπτωση σφάλματος του συστήματος, επομένως συνεχίζουμε να γράφουμε τα κρίσιμα σφάλματα στο δίσκο, παρόλο που είναι πιο αργό.

clogχρησιμοποιείται συνήθως για σκοπούς καταγραφής. Για μη κρίσιμη καταγραφή συμβάντων, η αποδοτικότητα είναι πιο σημαντική, επομένως clogπροτιμάται το cerr.

φράξιμο δήλωση

 εξωτερικό φράγμα

Ορίζεται στο αρχείο κεφαλίδας "> αρχείο κεφαλίδας.

Το clogαντικείμενο διασφαλίζεται ότι θα αρχικοποιηθεί κατά τη διάρκεια ή πριν από την πρώτη φορά που κατασκευάζεται ένα αντικείμενο τύπου ios_base::Init. clogδεν συνδέεται με καμία άλλη ροή.

Το "c" in clog αναφέρεται στο "χαρακτήρα", άρα το clog σημαίνει "log log".

Το αντικείμενο απόφραξης χρησιμοποιείται μαζί με τον τελεστή εισαγωγής (<<) για την εμφάνιση ροής χαρακτήρων. Η γενική σύνταξη είναι:

 φράξτε << varName;

ή

 φράξει << "Μερικές χορδές";

Ο τελεστής εξαγωγής μπορεί να χρησιμοποιηθεί περισσότερες από μία φορές με συνδυασμό μεταβλητών, συμβολοσειρών και χειριστών (όπως endl):

 φράξτε << var1 << "Some String" << var2 << endl;

Παράδειγμα: Πώς λειτουργεί το φράξιμο;

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

Σε αυτό το πρόγραμμα, το clog χρησιμοποιείται για τη ροή των δεδομένων καταγραφής επειδή το σφάλμα σε αυτήν την περίπτωση δεν είναι κρίσιμο για την εφαρμογή. Επομένως, η χρήση της buffered εξόδου του clog είναι πιο αποτελεσματική

Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι (εάν υπάρχει σφάλμα κατά το άνοιγμα του αρχείου):

 Σφάλμα κατά το άνοιγμα του αρχείου data.txt

ενδιαφέροντα άρθρα...