public member function
<ostream> <iostream>

std::basic_ostream::basic_ostream

初始化 (1)
explicit basic_ostream (basic_streambuf<char_type,traits_type>* sb);
初始化 (1)
explicit basic_ostream (basic_streambuf<char_type,traits_type>* sb);
複製 (2)
basic_ostream& (const basic_ostream&) = delete;
移動 (3)
protected: basic_ostream& (basic_ostream&& x);
構造物件
構造一個 basic_ostream 物件。

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

引數

sb
指向 basic_streambuf 物件的指標,其模板引數與 basic_ostream 物件相同。
char_typetraits_type 是成員型別,分別定義為第一個和第二個類模板引數的別名(參見 basic_ostream 型別)。
x
另一個 basic_ostream 物件,型別相同(具有相同的類模板引數 charTtraits)。

示例

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 類物件很少被直接構造。通常會使用派生類(如標準的 basic_ofstreambasic_ostringstream)。

資料競爭

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

異常安全

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

另見