首頁 > 後端開發 > C++ > std::setw() 和 Stringstreams:黏性操縱器與非黏性操縱器 — 有什麼不同?

std::setw() 和 Stringstreams:黏性操縱器與非黏性操縱器 — 有什麼不同?

Linda Hamilton
發布: 2024-12-11 12:37:11
原創
772 人瀏覽過

std::setw() and Stringstreams: Sticky vs. Non-Sticky Manipulators—What's the Difference?

操縱器與格式物件

在嘗試建構字串流時,出現了關於std::setw() 行為的常見誤解。假設它會永遠影響字串流是一個錯誤的假設,因為它在每次插入後都會重置。本文旨在澄清黏性和非黏性操縱器以及格式物件之間的區別,解決以下問題:

  • 為什麼 std::setw() 以這種方式表現?
  • 還有其他類似的機械手嗎行為?
  • std::ios_base::width() 和 std::setw() 在行為上有何不同?
  • 在哪裡可以找到有關此行為的明確文件在線?

黏性操縱器

std::ios_base 中的操縱器可以分為兩類:

  • 傳回對象的操縱器:這些操縱器不會直接影響流對象,因此不表現出「黏性」。這包括 setw。
  • 返回流的操縱器:這些操縱器直接影響流對象,因此是“粘性的”,這意味著它們所做的修改將持續存在,直到被另一個操縱器顯式變更為止。例如 setiosflags 和 setfill。

格式物件

格式物件用於暫時變更流的格式屬性。與操縱器相反,它們不會直接影響流物件。 PutSquareBracket 格式物件就是一個例子,它允許暫時修改格式而不影響永久狀態。

結論

std::setw() 是唯一的在操縱器中,它是唯一非黏性的。缺乏關於其具體行為的文檔可能是由於其與其他操縱器的相似性。然而,現實情況是,由於格式化輸出操作中要求明確將寬度設為零,因此它的行為有所不同。

以上是std::setw() 和 Stringstreams:黏性操縱器與非黏性操縱器 — 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板