Obiectul wcerr din C ++ este un obiect din clasa ostream. Este asociat cu fluxul standard de ieșire de eroare C stderr.
Diferența dintre cerr și wcerr
cerr
folosește char (caracter îngust) ca tip de caracter. Poate fi folosit pentru caractere ASCII și ANSI.
Pentru internaționalizare, avem nevoie de șiruri Unicode care nu se încadrează în caractere. wcerr
utilizează wchar_t
(caracter larg) și poate fi utilizat pentru caracterele Unicode.
Diferența dintre wcout și wcerr
Programatorii începători C ++ folosesc cout
și wcout
afișează eroarea folosind ieșirea standard pentru a depana programele lor, dar este întotdeauna o bună practică să folosiți cerr
și wcerr
să afișați erori.
Acest lucru se datorează faptului că, în loc să afișați fluxul de erori pe ecran, puteți modifica ulterior fluxul de eroare pentru a scrie erorile într-un fișier.
declaratie wcerr
extern wostream wcerr;
Este definit în fișierul antet "> fișierul antet.
wcerr
Obiectul este asigurat inițializat în timpul sau înainte de prima dată când un obiect de tip ios_base::Init
este construit. După ce wcerr
obiectul este construit, expresia (wcerr.flags & unitbuf)
este diferită de zero, ceea ce înseamnă că orice ieșire trimisă către aceste obiecte flux este imediat transferată la sistemul de operare. De asemenea, wcerr.tie() == &wcout
ie wcerr.tie()
returnează, &wcout
ceea ce înseamnă că wcout.flush()
este executat înainte de orice operație de ieșire activată wcerr
.
„Wc” în wcerr
se referă la „caracter larg” și „err” înseamnă „eroare”, de aceea wcerr înseamnă „eroare caracter larg”. wcerr
Obiectul este utilizat împreună cu operatorul de inserare (<<) pentru a afișa un flux de caractere. Sintaxa generală este:
wcerr << varName;
sau
wcerr << "Some String";
Operatorul de extracție poate fi folosit de mai multe ori cu o combinație de variabile, șiruri și manipulatoare (cum ar fi endl
):
wcerr << var1 << "Some String" << var2 << endl;
Exemplu: Cum funcționează 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; )
Când rulați programul, ieșirea va fi: (dacă fișierul nu a putut fi deschis)
Eroare la deschiderea fișierului data.txt