簡體   English   中英

為什么cout返回smanip?

[英]Why does cout return smanip?

誰能解釋一下setw機械手的聲明? 我完全不懂嘗試。 iomanip中setw的聲明如下

 smanip setw(int)

現在什么是smanip? 當我們給std :: cout << setw(10)<<“ Hai”時會發生什么[我想知道setw實際上如何影響輸出,換句話說,在幕后發生的動作)

smanip是實現定義的類型。 只要完成工作,該庫就可以將其定義或鍵入定義為喜歡的任何東西。

實際上,它將是某種結構,表示(a)要執行的操作,以及(b)在該操作中使用的參數10 它可能還具有執行操作的功能,也可能沒有,這取決於實現如何定義operator<<(ostream &, smanip)或某些類似的重載來捕獲必要的操作數類型。 我尚未檢查實現以找出答案。

至於如何影響輸出: my_stream << setw(10)被定義為對流具有與調用my_stream.width(10)相同的效果。 因此, operator<<重載將確保以某種特定於實現的方式發生這種情況。 非參數化流操縱器的運算符重載專門定義為調用操縱器,但是使用smanip ,實現的自由度更高。

setw(int)本身不會進行任何修改。 它只是返回一個流操縱器(smanip),可用於修改流的行為。

// setw example
#include <iostream>
#include <iomanip>
using namespace std;

int main () {
  cout << setw (10);
  cout << 77 << endl;
  return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM