Het clog-object in C ++ is een object van klasse ostream. Het wordt geassocieerd met de standaard C-foutuitvoerstroom stderr.
clog
en cerr
beide zijn geassocieerd met stderr
, maar het verschilt van cerr
in die zin dat de streams clog
die binnenkomen worden gebufferd en niet automatisch met cout
.
Gebufferde uitvoer is efficiënter dan ongebufferde uitvoer. In het geval van gebufferde uitvoer wordt alle uitvoer in een variabele opgeslagen en in één keer naar schijf geschreven. Voor ongebufferde uitvoer moeten we naar schijf blijven schrijven.
Gebufferde uitvoer heeft niet de voorkeur voor kritieke fouten. In het geval van een systeemcrash, kan er een situatie ontstaan waarin de uitvoer zich nog in de buffer bevond en niet naar schijf werd geschreven en het foutbericht niet kan worden opgehaald. We kunnen het ons niet veroorloven om foutgegevens te verliezen in geval van een systeemcrash, dus we blijven de kritieke fouten naar schijf schrijven, ook al is deze langzamer.
clog
wordt vaak gebruikt voor logging doeleinden. Voor het vastleggen van niet-kritieke gebeurtenissen is efficiëntie belangrijker en heeft daarom de clog
voorkeur boven cerr.
klompenverklaring
externe ostream verstopping;
Het wordt gedefinieerd in header-bestand "> header-bestand.
Het clog
object wordt geïnitialiseerd tijdens of vóór de eerste keer dat een object van het type ios_base::Init
wordt geconstrueerd. clog
is niet gebonden aan een andere stream.
De "c" in clog verwijst naar "character", dus clog betekent "character log".
Het clog-object wordt samen met de invoegoperator (<<) gebruikt om een stroom tekens weer te geven. De algemene syntaxis is:
klomp << varName;
of
clog << "Some String";
De extractie-operator kan meerdere keren worden gebruikt met een combinatie van variabelen, strings en manipulatoren (zoals endl
):
clog << var1 << "Some String" << var2 << endl;
Voorbeeld: hoe werkt een verstopping?
#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 dit programma wordt clog gebruikt om de loggegevens te streamen, omdat de fout in dit geval niet kritiek is voor de toepassing. Het gebruik van gebufferde uitvoer van verstopping is dus efficiënter
Wanneer u het programma uitvoert, is de uitvoer (als er een fout is bij het openen van het bestand):
Fout bij het openen van het bestand data.txt