public member function
<sstream>

std::basic_stringstream::basic_stringstream

預設 (1)
explicit basic_stringstream (    ios_base::openmode which = ios_base::in | ios_base::out);
initialization (2)
explicit basic_stringstream (    const basic_string<char_type,traits_type,allocator_type>& str,    ios_base::openmode which = ios_base::in | ios_base::out);
預設 (1)
explicit basic_stringstream (    ios_base::openmode which = ios_base::in | ios_base::out);
initialization (2)
explicit basic_stringstream (    const basic_string<char_type,traits_type,allocator_type>& str,    ios_base::openmode which = ios_base::in | ios_base::out);
copy (3)
basic_stringstream (const basic_stringstream&) = delete;
move (4)
basic_stringstream (basic_stringstream&& x);
構造物件
構造一個 basic_stringstream 物件

(1) 空建構函式 (預設建構函式)
構造一個 basic_stringstream 物件,其內容為空序列。
內部,將其 basic_iostream 基類建構函式傳遞一個指向使用 which 作為引數構造的 basic_stringbuf 物件的指標。
(2) 初始化建構函式
構造一個 basic_stringstream 物件,其內容為 str 的副本。
內部,將其 basic_iostream 基類建構函式傳遞一個指向使用 strwhich 作為引數構造的 basic_stringbuf 物件的指標。
(3) 複製建構函式 (已刪除)
已刪除 (無複製建構函式)。
(4) 移動建構函式
獲取 x 的內容。
首先,該函式透過 x 移動構造其基類 basic_iostream 類以及 x 的內部 basic_streambuf 物件,然後透過呼叫成員函式 set_rdbuf 將它們關聯起來。
x 處於未指定但有效的狀態。
在呼叫之前,內部 basic_stringbuf 物件控制的序列是否是 x 中的序列,還是其副本,這取決於庫的實現。無論如何,呼叫後兩個物件都擁有使用獨立序列的內部*字串緩衝區*。
內部 basic_stringbuf 物件具有至少與 basic_stringstream 物件相同的生命週期。

引數

str
一個具有相同模板引數(charTtraitsAlloc)的basic_string物件,其內容被複制。
x
一個 basic_stringstream 物件,其型別相同(具有相同的類模板引數 charTtraitsAlloc),其值被移動。
which
開啟模式:由內部 basic_stringbuf 物件對其內部字元序列提供的訪問許可權。它是成員型別 openmode 的一個物件,其中以下成員值的任何組合都具有意義:
成員常量代表access
ios_base::in輸入序列支援輸入操作。
ios_base::out輸出序列支援輸出操作。
也可以指定 ios_base::openmode 型別的其他值,但它們對 basic_stringstream 物件是否有影響取決於庫的實現。
成員常量代表access
ios_base::in輸入序列支援輸入操作。
ios_base::out輸出序列支援輸出操作。
ios_base::ate在末尾構造後,以及在每次使用成員函式 str 重置內容後,寫入位置都在末尾。
也可以指定 ios_base::openmode 型別的其他值(例如 ios_base::app),但它們對 basic_stringstream 物件是否有影響取決於庫的實現。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// swapping ostringstream objects
#include <string>       // std::string
#include <iostream>     // std::cout
#include <sstream>      // std::stringstream

int main () {

  std::stringstream ss;

  ss << 100 << ' ' << 200;

  int foo,bar;
  ss >> foo >> bar;

  std::cout << "foo: " << foo << '\n';
  std::cout << "bar: " << bar << '\n';

  return 0;
}

輸出
foo: 100
bar: 200


資料競爭

移動建構函式 (4) 會修改 x

異常安全

強保證: 如果丟擲異常,則沒有副作用。

另見