public member function
<ostream> <iostream>

std::ostream::ostream

初始化 (1)
explicit ostream (streambuf* sb);
初始化 (1)
explicit ostream (streambuf* sb);
複製 (2)
ostream& (const ostream&) = delete;
移動 (3)
protected: ostream& (ostream&& x);
構造物件
構造一個 ostream 物件。

(1) 初始化建構函式
透過呼叫繼承的成員 ios::init 並將 sb 作為引數,為基類的元件分配初始值。
(2) 複製建構函式 (已刪除)
已刪除:沒有複製建構函式。
(3) 移動建構函式 (受保護)
獲取 x 的內容,但不包括其關聯的流緩衝區:它呼叫 ios::move 來傳輸 x 中從 ios 繼承的內部元件。x 的關聯流緩衝區保持不變且未被繫結(呼叫後 x 的所有其他元件均處於未指定但有效狀態)。

引數

sb
指向 streambuf 物件的指標。
x
另一個 ostream 物件。

示例

1
2
3
4
5
6
7
8
9
10
11
12
// ostream constructor
#include <iostream>     // std::cout, std::ostream, std::ios
#include <fstream>      // std::filebuf

int main () {
  std::filebuf fb;
  fb.open ("test.txt",std::ios::out);
  std::ostream os(&fb);
  os << "Test sentence\n";
  fb.close();
  return 0;
}

此程式碼使用一個 filebuf 物件(派生自 streambuf)來開啟檔案 test.txt。然後將該緩衝區作為引數傳遞給 ostream 建構函式,將其與流關聯。

ostream 類的物件很少直接構造。通常會使用派生類(如標準的 ofstreamostringstream)。

資料競爭

sb 指向的物件可能被訪問和/或修改。

異常安全

如果丟擲異常,唯一的副作用可能來自對 sb 的訪問/修改。

另見