C ++ wclog - standardní knihovna C ++

Objekt wclog v C ++ je objektem třídy wostream. Je spojen se standardním výstupním proudem stderr chyby C.

Rozdíl mezi clog a wclog

ucpat uživatele char (úzký znak) jako typ znaku. Lze jej použít pro znaky ASCII a ANSI.

Pro internacionalizaci potřebujeme řetězce Unicode, které se nevejdou do char. wclog používá wchar_t (široký znak) a je použitelný pro znaky Unicode.

Rozdíl mezi wcerr a wclog

wcloga wcerr, oba jsou spojeny s stderr, ale liší se od toho wcerrv tom smyslu, že streamy wclogjsou ukládány do vyrovnávací paměti a nejsou automaticky svázány wcout.

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ší.

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

deklarace wclog

 extern ostream wclog;

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

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

„Wc“ v wclogodkazuje na „široký znak“, tedy wclogznamená „široký znakový log“. The

wclogobjekt se používá spolu s operátorem vložení (<<), aby se zobrazil proud znaků. Obecná syntaxe je:

 wclog << varName;

nebo

 wclog << "Nějaký řetězec";

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

 wclog << var1 << "Nějaký řetězec" << var2 << endl;

Příklad: Jak funguje wclog?

 #include #include using namespace std; int main() ( char fileName() = "data.txt"; wifstream infile(fileName); if(infile) wcout << infile.rdbuf(); else wclog << L"Error while opening the file " << fileName < 

When you run the program, a possible output will be (if there is error in opening the file):

 Error while opening the file data.txt

Zajímavé články...