ホームページ >バックエンド開発 >C++ >一部の C iomanip マニピュレータがスティッキーであるのに、`std::setw()` などの他のマニピュレータはスティッキーではないのはなぜですか?

一部の C iomanip マニピュレータがスティッキーであるのに、`std::setw()` などの他のマニピュレータはスティッキーではないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 18:02:15830ブラウズ

Why Are Some C   iomanip Manipulators Sticky While Others, Like `std::setw()`, Are Not?

Sticky Iomanip Manipulators

C では、iomanip マニピュレーターはストリーム修飾子であり、入力ストリームと出力ストリームの動作や形式を変更するために使用されます。ただし、すべてのマニピュレータが同じように動作するわけではありません。一部は一時的で次の挿入にのみ影響しますが、その他は「スティッキー」で明示的に変更されるまで有効です。

std::setw() がスティッキーではないのはなぜですか?

他のほとんどのマニピュレータとは異なり、std::setw() はストリームの状態を永続的に変更しません。これは、これが書式設定マニピュレータと見なされ、挿入ごとに適切な配置のために明示的な幅の指定が必要になるためです。デフォルトでは、あいまいさを避け、書式設定の制御を維持するために、挿入のたびにゼロにリセットされます。

スティッキー マニピュレータ

次のマニピュレータはスティッキーです。つまり、有効なままになります。別のマニピュレータによって変更されるか、明示的に変更されるまでリセット:

  • std::setiosflags
  • std::resetiosflags
  • std::setbase
  • std::setfill
  • std::setprecision
  • すべてフラグ変更マニピュレータ (例: std::boolalpha、std::showbase)
  • すべての書式設定マニピュレータ (例: std::fixed、std::internal)
  • すべてのストリーム状態修飾子 (例: std::ws、 std::endl)

std::ios_base::width() と std::setw()

std::ios_base::width () は、すべてのストリーム タイプの基本クラスである std::ios_base のメンバー関数です。フィールドの現在の幅を返します。ただし、フィールド幅を直接制御するわけではありません。フィールド幅を設定するには、std::setw() を使用する必要があります。

オンライン リファレンス

iomanip マニピュレータとマニピュレータの包括的なリストについては、C 標準ライブラリのドキュメントを参照してください。彼らの行動。機能の詳細な説明と例が提供されます。あるいは、cppreference Web サイトなどのオンライン リソースでは、スティッキーな性質を含むマニピュレーターに関する詳細な情報が提供されます。

以上が一部の C iomanip マニピュレータがスティッキーであるのに、`std::setw()` などの他のマニピュレータはスティッキーではないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。