C ++ clog - C ++ Standard Library

Het clog-object in C ++ is een object van klasse ostream. Het wordt geassocieerd met de standaard C-foutuitvoerstroom stderr.

clogen cerrbeide zijn geassocieerd met stderr, maar het verschilt van cerrin die zin dat de streams clogdie 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.

clogwordt vaak gebruikt voor logging doeleinden. Voor het vastleggen van niet-kritieke gebeurtenissen is efficiëntie belangrijker en heeft daarom de clogvoorkeur boven cerr.

klompenverklaring

 externe ostream verstopping;

Het wordt gedefinieerd in header-bestand "> header-bestand.

Het clogobject wordt geïnitialiseerd tijdens of vóór de eerste keer dat een object van het type ios_base::Initwordt geconstrueerd. clogis 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

Interessante artikelen...