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
wclog
a wcerr
, oba jsou spojeny s stderr
, ale liší se od toho wcerr
v tom smyslu, že streamy wclog
jsou 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ší.
wclog
se 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 wclog
zajištěno, že objekt bude inicializován během nebo před prvním vytvořením objektu typu ios_base::Init
. wclog
není vázán na žádný jiný stream.
„Wc“ v wclog
odkazuje na „široký znak“, tedy wclog
znamená „široký znakový log“. The
wclog
objekt 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