ホームページ >バックエンド開発 >C++ >どの C ストリーム マニピュレータがスティッキーであり、なぜ `setw()` がスティッキーではないのでしょうか?

どの C ストリーム マニピュレータがスティッキーであり、なぜ `setw()` がスティッキーではないのでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-13 04:37:09956ブラウズ

Which C   Stream Manipulators are Sticky, and Why Isn't `setw()`?

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

C プログラミングでは、マニピュレータはストリームの出力形式を変更するために使用されます。特定のマニピュレータは「スティッキー」な方法で動作します。これは、明示的に変更されるまでその効果が持続することを意味します。

setw() が Sticky ではないのはなぜですか?

std::setw( ) は、非粘着マニピュレータの例です。これは、次の挿入操作にのみ影響することを意味します。 setw() を使用すると、幅設定はデフォルト値にリセットされます。

他のマニピュレータはスティッキーですか?

setw() を除くすべてのマニピュレータはスティッキーです。これ含まれるもの:

  • setiosflags
  • resetiosflags
  • setbase
  • setfill
  • setprecision
  • setiosflags
  • resetiosflags
  • setbase
  • setfil l
  • setprecision
  • [no]boolalpha
  • [no]showbase
  • [no]showpoint
  • [no]showpos
  • [no]skipws
  • [no]unitbuf
  • [no]uppercase
  • dec/ hex/ oct
  • 固定/科学
  • 内部/左/右
  • ws/ endl/終了/フラッシュ

の違いstd::ios_base::width() とstd::setw()

std::setw() は、幅の値を表すオブジェクトを返します。このオブジェクトは、ストリームに挿入される次の項目の幅を設定するために使用できます。

std::ios_base::width() は、ストリームの幅を直接設定します。ストリームへの後続の挿入は、新しい幅でフォーマットされます。

オンライン リファレンス

残念ながら、マニピュレータのスティッキーな動作を明示的に記載した明確なドキュメントはありません。ただし、その動作は C 標準ライブラリのドキュメントから推測できます。

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

次のコードは、スティッキー マニピュレータの動作を示しています。マニピュレータ:

結論

スティッキー マニピュレータは、出力の書式設定の制御に役立つ C の便利な機能です。ただし、予期しない結果を避けるために、彼らの行動に注意することが重要です。

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

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