L'oggetto wcerr in C ++ è un oggetto della classe ostream. È associato al flusso di output degli errori standard C stderr.
Differenza tra cerr e wcerr
cerr
usa char (carattere stretto) come tipo di carattere. Può essere utilizzato per i caratteri ASCII e ANSI.
Per l'internazionalizzazione, abbiamo bisogno di stringhe Unicode che non si adattano a char. wcerr
utilizza wchar_t
(carattere ampio) e utilizzabile per i caratteri Unicode.
Differenza tra wcout e wcerr
I programmatori C ++ principianti utilizzano cout
e wcout
per visualizzare l'errore utilizzando lo standard output per eseguire il debug dei loro programmi, ma è sempre buona norma utilizzare cerr
e wcerr
visualizzare gli errori.
Questo perché invece di mostrare il flusso di errore sullo schermo, è possibile modificare successivamente il flusso di errore per scrivere gli errori in un file.
dichiarazione wcerr
wostream wcerr esterno;
È definito nel file di intestazione "> file di intestazione.
Si wcerr
garantisce che l' oggetto venga inizializzato durante o prima della prima costruzione di un oggetto di tipo ios_base::Init
. Dopo che l' wcerr
oggetto è stato costruito, l'espressione (wcerr.flags & unitbuf)
è diversa da zero, il che significa che qualsiasi output inviato a questi oggetti flusso viene immediatamente scaricato nel sistema operativo. Inoltre, wcerr.tie() == &wcout
ie wcerr.tie()
ritorna, il &wcout
che significa che wcout.flush()
viene eseguito prima di qualsiasi operazione di output wcerr
.
Il "wc" in si wcerr
riferisce a "carattere ampio" e "err" significa "errore", quindi wcerr significa "errore di carattere ampio". L' wcerr
oggetto viene utilizzato insieme all'operatore di inserimento (<<) per visualizzare un flusso di caratteri. La sintassi generale è:
wcerr << varName;
o
wcerr << "Some String";
L'operatore di estrazione può essere utilizzato più di una volta con una combinazione di variabili, stringhe e manipolatori (come endl
):
wcerr << var1 << "Some String" << var2 << endl;
Esempio: come funziona 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; )
Quando esegui il programma, l'output sarà: (se il file non può essere aperto)
Errore durante l'apertura del file data.txt