"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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++ ?

Publié le 2024-12-23
Parcourir:744

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 est 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3