L'oggetto clog in C ++ è un oggetto della classe ostream. È associato al flusso di output degli errori standard C stderr.
clog
e cerr
, entrambi sono associati a stderr
, ma differisce da cerr
nel senso che i flussi in clog
ingresso sono bufferizzati e non collegati automaticamente cout
.
L'output bufferizzato è più efficiente dell'output senza buffer. Nel caso dell'output bufferizzato, tutto l'output viene salvato in una variabile e scritto su disco tutto in una volta. Per l'output senza buffer, dobbiamo continuare a scrivere su disco.
L'output memorizzato nel buffer non è preferito per gli errori critici. In caso di arresto anomalo del sistema, può verificarsi una situazione in cui l'output era ancora nel buffer e non è stato scritto su disco e il messaggio di errore non può essere recuperato. Non possiamo permetterci di perdere i dati di errore in caso di crash del sistema, quindi continuiamo a scrivere gli errori critici sul disco anche se è più lento.
clog
è comunemente usato per scopi di registrazione. Per la registrazione di eventi non critici, l'efficienza è più importante, quindi clog
è preferibile a cerr.
dichiarazione di intasamento
zoccolo esterno ostream;
È definito nel file di intestazione "> file di intestazione.
Si clog
garantisce che l' oggetto venga inizializzato durante o prima della prima costruzione di un oggetto di tipo ios_base::Init
. clog
non è legato a nessun altro flusso.
La "c" in clog si riferisce a "carattere", quindi clog significa "log dei caratteri".
L'oggetto clog viene utilizzato insieme all'operatore di inserimento (<<) per visualizzare un flusso di caratteri. La sintassi generale è:
clog << varName;
o
clog << "Some String";
L'operatore di estrazione può essere utilizzato più di una volta con una combinazione di variabili, stringhe e manipolatori (come endl
):
clog << var1 << "Some String" << var2 << endl;
Esempio: come funziona lo zoccolo?
#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; )
In questo programma, clog viene utilizzato per trasmettere i dati di registro perché l'errore in questo caso non è critico per l'applicazione. Quindi l'uso dell'output bufferizzato di clog è più efficiente
Quando esegui il programma, l'output sarà (se c'è un errore nell'apertura del file):
Errore durante l'apertura del file data.txt