Objekt začepljenja u C ++-u objekt je klase ostream. Povezan je sa standardnim izlaznim tokom pogreške C stderr.
clog
i cerr
obje su povezane s stderr
, ali se razlikuje od toga cerr
u smislu da su potoci u clog
baferu i nisu automatski povezani s cout
.
Međuspremni izlaz učinkovitiji je od nebuferiranog. U slučaju međuspremnika, sav se izlaz sprema u varijablu i odjednom zapisuje na disk. Za nebuferirani izlaz moramo nastaviti pisati na disk.
Me uspremljeni izlaz nije poželjan za kritične pogreške. U slučaju pada sustava, može doći do situacije da je izlaz još uvijek u međuspremniku i nije zapisan na disk, a poruka o pogrešci ne može se dohvatiti. Ne možemo si priuštiti gubitak podataka o pogreškama u slučaju pada sustava pa kritične pogreške nastavljamo upisivati na disk iako je sporiji.
clog
se obično koristi za sječu drva. Za nekritično zapisivanje događaja, učinkovitost je važnija pa clog
je poželjno potvrditi.
deklaracija o začepljenju
vanjski začepljeni ostream;
Definirano je u datoteci zaglavlja "> datoteka zaglavlja.
Osigurano clog
je da se objekt inicijalizira tijekom ili prije prvog ios_base::Init
konstruiranja objekta tipa . clog
nije vezan ni za jedan drugi tok.
"C" u začepljenju odnosi se na "znak", stoga clog znači "zapisnik znakova".
Objekt začepljenja koristi se zajedno s operatorom umetanja (<<) kako bi se prikazao tok znakova. Općenita sintaksa je:
začepiti << varName;
ili
začepiti << "Neki niz";
Operator ekstrakcije može se koristiti više puta s kombinacijom varijabli, nizova i manipulatora (poput endl
):
začepiti << var1 << "Neki niz" << var2 << endl;
Primjer: Kako djeluje začepljenje?
#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; )
U ovom se programu začepljenje koristi za strujanje podataka dnevnika jer pogreška u ovom slučaju nije kritična za aplikaciju. Dakle, upotreba puferiranog izlaza začepljenja je učinkovitija
Kada pokrenete program, izlaz će biti (ako postoji pogreška u otvaranju datoteke):
Pogreška prilikom otvaranja datoteke data.txt