public member function
<istream> <iostream>

std::basic_istream::basic_istream

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

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

引數

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

示例

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

int main () {
  std::filebuf fb;
  if (fb.open ("test.txt",std::ios::in))
  {
    std::istream is(&fb);
    while (is)
      std::cout << char(is.get());
    fb.close();
  }
  return 0;
}

此示例程式碼使用 basic_filebuf 物件(派生自 basic_streambuf)開啟一個名為 test.txt 的檔案。該緩衝區作為引數傳遞給 basic_istream 物件is的建構函式,將其與流關聯。然後,程式使用輸入流將其內容列印到 cout

basic_istream 類的物件很少直接構造。通常會使用某個派生類(例如標準的 basic_ifstreambasic_istringstream)。

資料競爭

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

異常安全

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

另見