public member class
<ostream> <iostream>

std::basic_ostream::sentry

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

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

它的解構函式按以下順序對同一流物件執行以下操作

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

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

此類結構為
1
2
3
4
5
6
7
8
9
class sentry {
public:
  explicit sentry (basic_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 (basic_ostream& os);
  ~sentry();
  explicit operator bool() const;
  sentry (const sentry&) = delete;
  sentry& operator= (const sentry&) = delete;
};

成員

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

另見