Clog-objekti C ++: ssa on luokan ostream -objekti. Se liittyy normaaliin C-virheen ulostulovirtaan stderr.
clog
ja cerr
molemmat liittyvät stderr
, mutta se eroaa cerr
siinä mielessä, että virtaukset clog
ovat puskuroituja eikä niihin ole automaattisesti sidottu cout
.
Puskuroitu lähtö on tehokkaampaa kuin puskuroimaton lähtö. Puskuroidun lähdön tapauksessa koko lähtö tallennetaan muuttujaan ja kirjoitetaan levylle kerralla. Puskuroimattomalle lähdölle meidän on jatkettava kirjoittamista levylle.
Puskuroitua lähtöä ei suositella kriittisten virheiden varalta. Järjestelmän kaatumisen yhteydessä voi tulla tilanne, jossa lähtö oli edelleen puskurissa eikä sitä kirjoitettu levylle eikä virhesanomaa voida noutaa. Meillä ei ole varaa menettää virhetietoja järjestelmän kaatumisen yhteydessä, joten kirjoitamme kriittiset virheet levylle, vaikka ne ovatkin hitaampia.
clog
käytetään yleisesti hakkuutarkoituksiin. Ei-kriittisten tapahtumien kirjaamisessa tehokkuus on tärkeämpää, joten se clog
on parempi kuin cerr.
tukkia ilmoitus
ulkoinen ostream-tukkeuma;
Se määritetään otsikkotiedostossa "> header file.
clog
Tavoitteena on varmistettu alustaa aikana tai ennen ensimmäistä kertaa kohde tyyppi ios_base::Init
on rakennettu. clog
ei ole sidottu mihinkään muuhun streamiin.
"C" tukossa viittaa "merkkiin", joten tukos tarkoittaa "merkkilokia".
Tukosobjektia käytetään yhdessä lisäysoperaattorin (<<) kanssa merkkivirran näyttämiseksi. Yleinen syntakse on:
tukkia << varName;
tai
tukkia << "Jotkut merkkijonot";
Puraoperaattoria voidaan käyttää useammin kuin kerran muuttujien, merkkijonojen ja manipulaattoreiden (kuten endl
) yhdistelmän kanssa:
tukkia << var1 << "Jotkut merkkijonot" << var2 << endl;
Esimerkki: Kuinka tukko toimii?
#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; )
Tässä ohjelmassa lokitietojen suoratoistoon käytetään tukoksia, koska virhe tässä tapauksessa ei ole kriittinen sovellukselle. Joten puskuroidun tukoksen tuotos on tehokkaampaa
Kun suoritat ohjelmaa, tulos on (jos tiedoston avaamisessa on virhe):
Virhe avattaessa tiedostoa data.txt