Objekt wcerr v C ++ je objektem třídy ostream. Je spojen se standardním výstupním proudem stderr chyby C.
Rozdíl mezi cerr a wcerr
cerr
používá znak (ú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. wcerr
použití wchar_t
(široký znak) a použitelné pro znaky Unicode.
Rozdíl mezi wcout a wcerr
Programátoři C ++ pro začátečníky používají cout
a wcout
k zobrazení chyby pomocí standardního výstupu k ladění svých programů, ale vždy je dobrým zvykem používat cerr
a wcerr
zobrazovat chyby.
Důvodem je, že místo zobrazování chybového proudu na obrazovce můžete později chybový proud změnit a zapsat chyby do souboru.
prohlášení wcerr
externí wostream wcerr;
Je definován v hlavičkovém souboru.
Je wcerr
zajištěno, že objekt bude inicializován během nebo před prvním vytvořením objektu typu ios_base::Init
. Po wcerr
zkonstruování objektu je výraz (wcerr.flags & unitbuf)
nenulový, což znamená, že jakýkoli výstup odeslaný těmto objektům proudu je okamžitě vyprázdněn do operačního systému. Také wcerr.tie() == &wcout
tj. wcerr.tie()
Vrací, &wcout
což znamená, že wcout.flush()
se provede před jakoukoli výstupní operací wcerr
.
„Wc“ v wcerr
odkazuje na „široký znak“ a „err“ znamená „chyba“, proto wcerr znamená „široký znakový znak“. wcerr
Objekt se používá spolu s operátorem vkládání (<<), aby se zobrazí proud znaků. Obecná syntaxe je:
wcerr << varName;
nebo
wcerr << "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
):
wcerr << var1 << "Nějaký řetězec" << var2 << endl;
Příklad: Jak funguje wcerr?
#include #include using namespace std; int main() ( char fileName() = "data.txt"; wifstream infile(fileName); if(infile) wcout << infile.rdbuf(); else wcerr << "Error while opening the file " << fileName << endl; return; )
Po spuštění programu bude výstup: (pokud soubor nelze otevřít)
Chyba při otevírání souboru data.txt