C ++ clog - C ++ Standard Library

Clog objekt v C ++ je objekt třídy ostream. Je spojen se standardním výstupním proudem stderr chyby C.

cloga cerr, oba jsou spojeny s stderr, ale liší se od toho cerrv tom smyslu, že streamy clogjsou ukládány do vyrovnávací paměti a nejsou automaticky svázány cout.

Výstup ve vyrovnávací paměti je efektivnější než výstup bez vyrovnávací paměti. V případě výstupu s vyrovnávací pamětí se veškerý výstup uloží do proměnné a zapíše se na disk najednou. U výstupu bez vyrovnávací paměti musíme pokračovat v zápisu na disk.

U kritických chyb se neupřednostňuje výstup ve vyrovnávací paměti. V případě selhání systému může nastat situace, kdy byl výstup stále ve vyrovnávací paměti a nebyl zapsán na disk a chybovou zprávu nelze načíst. Nemůžeme si dovolit přijít o chybová data v případě selhání systému, takže kritické chyby stále zapisujeme na disk, i když je pomalejší.

clogse běžně používá pro účely protokolování. Pro nekritické protokolování událostí je důležitější efektivita, proto clogse dává přednost cerr.

ucpat prohlášení

 vnější ostream ucpat;

Je definován v hlavičkovém souboru.

Je clogzajištěno, že objekt bude inicializován během nebo před prvním vytvořením objektu typu ios_base::Init. clognení vázán na žádný jiný stream.

„C“ v ucpání odkazuje na „znak“, proto ucpání znamená „protokol znaků“.

Objekt clog se používá spolu s operátorem vložení (<<) za účelem zobrazení proudu znaků. Obecná syntaxe je:

 ucpat << varName;

nebo

 clog << "Some String";

Operátor extrakce lze použít více než jednou s kombinací proměnných, řetězců a manipulátorů (jako endl):

 clog << var1 << "Some String" << var2 << endl;

Příklad: Jak ucpávání funguje?

 #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; )

V tomto programu se ucpání používá ke streamování dat protokolu, protože chyba v tomto případě není pro aplikaci kritická. Efektivnější je tedy použití výstupu ucpaného do vyrovnávací paměti

Po spuštění programu bude výstup (pokud dojde k chybě při otevírání souboru):

 Chyba při otevírání souboru data.txt

Zajímavé články...