Maison  >  Article  >  développement back-end  >  Pouvez-vous mélanger « cout » et « wcout » sans erreurs ?

Pouvez-vous mélanger « cout » et « wcout » sans erreurs ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-14 17:13:01463parcourir

Can You Mix `cout` and `wcout` without Errors?

Mélanger cout et wcout

Comme vous le lisez dans le « C Cookbook », le code suivant peut entraîner une erreur :

cout << s << std::endl; // You shouldn't be able to
wcout << ws << std::endl; // run these at the same time

Cela est dû au concept "d'orientation du flux". Une fois qu'un flux est créé, mais avant qu'aucune opération ne soit effectuée sur celui-ci, il est sans orientation. Cependant, une fois qu'une fonction d'entrée/sortie de caractères larges (comme wcout) lui est appliquée, il devient un flux orienté large, et une fois qu'une fonction d'entrée/sortie d'octets (comme cout) lui est appliquée, il devient un flux d'octets. flux orienté.

La norme C précise que "les fonctions d'entrée/sortie d'octets ne doivent pas être appliquées à un flux orienté large, et les fonctions d'entrée/sortie de caractères larges ne doivent pas être appliquées à un flux orienté octets." (Norme C [7.19.2]).

Dans le cas du code que vous avez fourni, cout définit stdout comme un flux orienté octet. Par la suite, wcout ne doit pas être utilisé sur la sortie standard conformément à la norme. Cependant, en pratique, certains compilateurs et environnements peuvent permettre de mélanger des fonctions de sortie orientées caractères larges et octets sur le même flux. Ce comportement peut dépendre de la version du compilateur et de la plateforme.

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