C ++ wcerr - Bibliothèque standard C ++

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

cerrutilise 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. wcerrutilise wchar_t(caractère large) et utilisable pour les caractères Unicode.

Différence entre wcout et wcerr

Les programmeurs C ++ débutants utilisent coutet wcoutpour afficher l'erreur en utilisant la sortie standard pour déboguer leurs programmes, mais il est toujours recommandé d'utiliser cerret wcerrd'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' wcerrobjet est assuré d'être initialisé pendant ou avant la première construction d'un objet de type ios_base::Init. Une fois l' wcerrobjet 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() == &wcoutie wcerr.tie()retourne &wcoutce 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' wcerrobjet 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

Articles intéressants...