public member class
<ostream> <iostream>

std::ostream::sentry

class sentry;
為輸出準備流
成員類,用於在每次輸出操作之前和之後執行一系列操作

它的建構函式按以下順序對傳遞給它的流物件執行以下操作
  • 如果其內部錯誤標誌中的任何一個被設定,則函式可能會設定其failbit標誌並返回。
  • 如果它是一個繫結的流,則函式會重新整理它所繫結的流(如果其輸出緩衝區不為空),除非函式確定不需要同步。
    失敗時,它可能會設定failbit標誌。

其解構函式對同一流物件執行以下操作(按此順序)

實現可能會使用sentry物件的構造和析構來對流執行額外的初始化或清理操作,這些操作是所有輸出操作共有的。

所有執行輸出操作的成員函式都會自動構造一個該類的物件,然後對其進行求值(如果沒有任何狀態標誌被設定,則返回true)。只有當此物件求值為true時,該函式才會嘗試輸出操作(否則,它將在不執行的情況下返回)。在返回之前,該函式會銷燬sentry物件。

此類結構為
1
2
3
4
5
6
7
8
9
class sentry {
public:
  explicit sentry (ostream& os);
  ~sentry();
  operator bool() const;
private:
  sentry (const sentry&);             // not defined
  sentry& operator= (const sentry&);  // not defined
};
1
2
3
4
5
6
7
8
class sentry {
public:
  explicit sentry (ostream& os);
  ~sentry();
  explicit operator bool() const;
  sentry (const sentry&) = delete;
  sentry& operator= (const sentry&) = delete;
};

成員

explicit sentry (ostream& os);
為輸出操作準備輸出流,執行上述操作。
~sentry();
執行上述操作。
explicit operator bool() const;
當物件被求值時,它返回一個bool值,指示sentry建構函式是否成功執行了其所有任務:如果在構造過程的某個時刻設定了內部錯誤標誌,則此函式對於該物件始終返回false

另見