Maison > Article > développement back-end > Pouvez-vous mélanger « cout » et « wcout » sans erreurs ?
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!