cout と wcout の混合
「C クックブック」で読んだとおり、次のコードはエラーになる可能性があります。
cout << s << std::endl; // You shouldn't be able to wcout << ws << std::endl; // run these at the same time
これは「ストリーム指向」という概念によるものです。ストリームの作成後、ストリームに対して操作が実行される前は、方向性がありません。ただし、ワイド文字入出力関数 (wcout など) が適用されるとワイド指向のストリームになり、バイト入出力関数 (cout など) が適用されるとバイトストリームになります。
C 標準では、「バイト入出力関数はワイド指向ストリームに適用されず、ワイド文字入出力関数はバイト指向ストリームに適用されない」と規定されています。 (C 標準 [7.19.2])。
指定したコードの場合、cout は stdout をバイト指向のストリームに設定します。したがって、標準に従って、wcout を stdout で使用するべきではありません。ただし、実際には、一部のコンパイラや環境では、同じストリーム上でワイド文字出力関数とバイト指向の出力関数を混在させることができる場合があります。この動作はコンパイラのバージョンとプラットフォームによって異なる場合があります。
以上が`cout` と `wcout` をエラーなく混在させることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。