Het wcerr-object in C ++ is een object van klasse ostream. Het wordt geassocieerd met de standaard C-foutuitvoerstroom stderr.
Verschil tussen cerr en wcerr
cerr
gebruikt char (smal teken) als tekentype. Het kan worden gebruikt voor ASCII- en ANSI-tekens.
Voor internationalisering hebben we Unicode-strings nodig die niet in char passen. wcerr
gebruikt wchar_t
(breed teken) en bruikbaar voor Unicode-tekens.
Verschil tussen wcout en wcerr
Beginnende C ++ programmeurs gebruiken cout
en wcout
om de fout weer te geven met behulp van standaarduitvoer om hun programma's te debuggen, maar het is altijd een goede gewoonte om fouten te gebruiken cerr
en weer wcerr
te geven.
Dit komt doordat u in plaats van de foutenstroom op het scherm weer te geven, later de foutenstroom kunt wijzigen om de fouten naar een bestand te schrijven.
wcerr verklaring
externe wostream wcerr;
Het wordt gedefinieerd in header-bestand "> header-bestand.
Het wcerr
object wordt geïnitialiseerd tijdens of vóór de eerste keer dat een object van het type ios_base::Init
wordt geconstrueerd. Nadat het wcerr
object is geconstrueerd, is de uitdrukking (wcerr.flags & unitbuf)
niet nul, wat betekent dat alle uitvoer die naar deze streamobjecten wordt verzonden, onmiddellijk naar het besturingssysteem wordt doorgespoeld. Ook geeft wcerr.tie() == &wcout
ie wcerr.tie()
terug &wcout
wat betekent dat wcout.flush()
wordt uitgevoerd voordat een uitvoerbewerking wordt uitgevoerd wcerr
.
De "wc" in wcerr
verwijst naar "breed karakter" en "err" betekent "fout", vandaar dat wcerr "brede karakterfout" betekent. Het wcerr
object wordt samen met de invoegoperator (<<) gebruikt om een stroom tekens weer te geven. De algemene syntaxis is:
wcerr << varName;
of
wcerr << "Some String";
De extractie-operator kan meerdere keren worden gebruikt met een combinatie van variabelen, strings en manipulatoren (zoals endl
):
wcerr << var1 << "Some String" << var2 << endl;
Voorbeeld: hoe werkt 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; )
Wanneer u het programma uitvoert, is de uitvoer: (als het bestand niet kon worden geopend)
Fout bij het openen van het bestand data.txt