Maison > développement back-end > C++ > Pourquoi devriez-vous éviter de mélanger cout et wcout dans le même programme C ?

Pourquoi devriez-vous éviter de mélanger cout et wcout dans le même programme C ?

Mary-Kate Olsen
Libérer: 2024-11-14 14:11:02
original
836 Les gens l'ont consulté

Why Should You Avoid Mixing cout and wcout in the Same C   Program?

Mélanger des flux de sortie larges et étroits dans le même programme

Dans le "C Cookbook", il est mentionné que mélanger cout et wcout dans le même programme ne devrait pas être fait. Ce commentaire vient du fait que les standards C et C imposent que les flux aient une orientation, et une fois cette orientation définie pour un flux, il ne faut pas mélanger des opérations incompatibles avec l'orientation.

Quoi est-ce que cela signifie en pratique ?

Lorsque cout ou wcout est appelé pour la première fois, l'orientation de stdout devient définie. Dans le cas de cout, stdout devient un flux orienté octets, et dans le cas de wcout, stdout devient un flux orienté large. Selon la norme C [27.4.1] et la norme C [7.19.2], une fois l'orientation d'un flux définie, vous ne devez pas appeler une fonction qui n'est pas compatible avec l'orientation de ce flux.

Exceptions à la règle

Cependant, il est important de noter que tous les compilateurs ne suivent pas strictement cette norme. Par exemple, dans Visual C 10.0, la fonction fwide (utilisée pour définir l'orientation d'un flux) n'est pas implémentée. Par conséquent, dans Visual C, le mélange de cout et wcout est autorisé.

De même, dans les premières versions de GCC, en raison d'un bug qui a été corrigé, il était possible d'appeler cout et wcout dans le même programme en appelant std ::ios::sync_with_stdio(false); au début du programme.

Cependant, il est important de garder à l'esprit qu'il s'agit d'exceptions à la règle. En général, il n'est pas recommandé de mélanger des flux de sortie larges et étroits dans le même programme, car cela peut entraîner un comportement inattendu ou des résultats indéfinis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal