Maison  >  Article  >  développement back-end  >  Pouvez-vous mélanger « cout » et « wcout » en C sans enfreindre la norme ?

Pouvez-vous mélanger « cout » et « wcout » en C sans enfreindre la norme ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 22:55:03147parcourir

Can You Mix `cout` and `wcout` in C   Without Breaking the Standard?

Mélanger des flux de caractères larges et étroits : comprendre les exigences de la norme

En C, mélanger cout (flux de sortie de caractères étroits) et wcout (flux de sortie de caractères étroits) flux de sortie de caractères) dans le même programme soulève des questions sur l'orientation du flux.

Le standard C [27.4.1] stipule que « les opérations sur les flux de caractères larges et étroits correspondants » doivent suivre la même sémantique que les opérations de mélange sur les FILE dans la norme C. En référence à [7.19.2] dans la norme C, il est évident que les fonctions d'entrée/sortie d'octets ne doivent pas être appliquées aux flux orientés large, et les fonctions d'entrée/sortie de caractères larges ne doivent pas être appliquées aux flux orientés octets.

Cela suggère qu'il faut éviter de mélanger wcout et cout au sein du même programme. Il existe cependant des exceptions. Par exemple, dans Visual C 10.0, la fonction fwide chargée de maintenir l'orientation du flux ne serait pas implémentée. Cela signifie que le mélange de cout et wcout peut fonctionner correctement dans cet environnement.

De même, un "bug" dans libstdc (libstdc /11705) permet le mélange d'E/S orientées octets et larges en appelant std ::ios::sync_with_stdio(false). Cependant, il est important de noter que ce comportement n'est pas garanti et peut varier selon le compilateur et le système d'exploitation.

Par conséquent, même si la norme déconseille de mélanger cout et wcout, il est essentiel d'être conscient des potentiels exceptions et pour garantir une gestion appropriée de l'orientation du flux lorsque vous travaillez avec différents compilateurs ou environnements.

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:
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