[英]What does the combination of setf(ios::left, ios::adjustfield) do?
[英]What is the purpose of ios::adjustfield?
ios::adjustfield
到底是什么?它有什么作用? 我何時以及如何使用它?
ios::adjustfield
是通過將ios::left
, ios::right
和ios::internal
或在一起而制成的位掩碼。 后三個是控制輸出調整的標志。 該頁面提供了這三個標志的示例。
但是,設置ios::adjustfield
本身沒有多大意義-在任何給定時間設置三個調整標志中的一個以上都沒有任何意義。 那么為什么標准庫提供它呢?
答案是使清除現有調整標志變得容易。 如果flg
是當前的一組格式化標志的,你可以不設置ios::right
,只需flg |= ios::right;
,因為如果已經設置了不同的調整標志,那么您只需同時將兩個調整標志設置為on,這是沒有意義的。
相反,您需要先使用flg &= ~ios::adjustfield;
清除當前的調整標志flg &= ~ios::adjustfield;
這為您清除了使用flg |= ios::right;
設置另一個調整標志的方式flg |= ios::right;
操縱ios
標志的功能ios::setf()
允許您給它掩蓋要清除的標志。
注意,您通常不需要直接使用ios::adjustfield
; I / O操作器std::left
, std::right
和std::internal
更加方便。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.