L'objet wcerr en C ++ est un objet de classe ostream. Il est associé au flux de sortie d'erreur C standard stderr.
Différence entre cerr et wcerr
cerr
utilise char (caractère étroit) comme type de caractère. Il peut être utilisé pour les caractères ASCII et ANSI.
Pour l'internationalisation, nous avons besoin de chaînes Unicode qui ne rentrent pas dans char. wcerr
utilise wchar_t
(caractère large) et utilisable pour les caractères Unicode.
Différence entre wcout et wcerr
Les programmeurs C ++ débutants utilisent cout
et wcout
pour afficher l'erreur en utilisant la sortie standard pour déboguer leurs programmes, mais il est toujours recommandé d'utiliser cerr
et wcerr
d'afficher les erreurs.
En effet, au lieu d'afficher le flux d'erreurs à l'écran, vous pouvez modifier ultérieurement le flux d'erreurs pour écrire les erreurs dans un fichier.
déclaration wcerr
wostream wcerr externe;
Il est défini dans le fichier d'en-tête "> fichier d'en-tête.
L' wcerr
objet est assuré d'être initialisé pendant ou avant la première construction d'un objet de type ios_base::Init
. Une fois l' wcerr
objet construit, l'expression (wcerr.flags & unitbuf)
est différente de zéro, ce qui signifie que toute sortie envoyée à ces objets de flux est immédiatement vidée vers le système d'exploitation. Aussi wcerr.tie() == &wcout
ie wcerr.tie()
retourne &wcout
ce qui signifie qu'il wcout.flush()
est exécuté avant toute opération de sortie wcerr
.
Le "wc" dans se wcerr
réfère au "caractère large" et "err" signifie "erreur", donc wcerr signifie "erreur de caractère large". L' wcerr
objet est utilisé avec l'opérateur d'insertion (<<) afin d'afficher un flux de caractères. La syntaxe générale est:
wcerr << varName;
ou
wcerr << "Une chaîne";
L'opérateur d'extraction peut être utilisé plus d'une fois avec une combinaison de variables, de chaînes et de manipulateurs (comme endl
):
wcerr << var1 << "Some String" << var2 << endl;
Exemple: comment fonctionne 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; )
Lorsque vous exécutez le programme, la sortie sera: (si le fichier n'a pas pu être ouvert)
Erreur lors de l'ouverture du fichier data.txt