ホームページ > バックエンド開発 > C++ > 同じ C プログラム内で cout と wcout を混在させないほうがよいのはなぜですか?

同じ C プログラム内で cout と wcout を混在させないほうがよいのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-14 14:11:02
オリジナル
797 人が閲覧しました

Why Should You Avoid Mixing cout and wcout in the Same C   Program?

同じプログラム内でのワイド出力ストリームとナロー出力ストリームの混合

「C Cookbook」では、cout と wcout を混合することが記載されています。同じプログラムを実行すべきではありません。このコメントは、C および C 標準ではストリームには方向があることが規定されており、この方向がストリームに設定された後は、その方向と互換性のない操作を混在させるべきではないという事実に由来しています。

これは実際には意味するのでしょうか?

cout または wcout が初めて呼び出されたときに、stdout の方向が設定されます。 cout の場合、stdout はバイト指向のストリームになり、wcout の場合、stdout はワイド指向のストリームになります。 C 標準 [27.4.1] および C 標準 [7.19.2] に従って、ストリームの方向が設定された後は、そのストリームの方向と互換性のない関数を呼び出すべきではありません。

ルールの例外

ただし、すべてのコンパイラーがこの標準に厳密に従っているわけではないことに注意することが重要です。たとえば、Visual C 10.0 では、fwide 関数 (ストリームの方向を設定するために使用される) は実装されていません。したがって、Visual C では、 cout と wcout の混合が許可されています。

同様に、GCC の初期バージョンでは、修正されたバグにより、std を呼び出すことで同じプログラム内で cout と wcout を呼び出すことができました。 ::ios::sync_with_stdio(false);

ただし、これらはルールの例外であることに留意することが重要です。一般に、同じプログラム内にワイド出力ストリームとナロー出力ストリームを混在させることはお勧めできません。予期しない動作や未定義の結果が生じる可能性があります。

以上が同じ C プログラム内で cout と wcout を混在させないほうがよいのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート