std::strstreambuf::str
來自 cppreference.com
< cpp | io | strstreambuf
char* str(); |
(C++98 起棄用) (C++26 中移除) |
|
呼叫 freeze(),然後返回 get 區域起始指標的副本,即 std::streambuf::eback()。
對於所有透過 std::strstream 提供的介面構造的可寫入 std::strstreambuf
物件,get 區域的起始位置也是 put 區域的起始位置。
目錄 |
[編輯] 引數
(無)
[編輯] 返回值
eback() 的副本,可能是一個空指標。
[編輯] 注意
此函式通常透過 std::strstream 介面呼叫。
對 freeze() 的呼叫保證返回的指標在下次顯式呼叫 freeze(false) 之前保持有效:否則(在動態緩衝區上)任何輸出操作都可能觸發緩衝區重新分配,從而使指標失效。它還會在 std::strstreambuf
的解構函式中導致記憶體洩漏,除非在緩衝區(或更常見地,管理它的 std::strstream)被銷燬之前呼叫 freeze(false)。
[編輯] 示例
執行此程式碼
#include <iostream> #include <strstream> int main() { std::strstream dyn; // dynamically-allocated read/write buffer dyn << "Test: " << 1.23 << std::ends; std::strstreambuf* buf = dyn.rdbuf(); std::cout << "R/W buffer holds [" << buf->str() // or dyn.str() << "]\n"; dyn.freeze(false); // after calling .str() on a dynamic strstream char arr[10]; std::ostrstream user(arr, 10); // fixed-size write-only buffer buf = user.rdbuf(); user << 1.23 << std::ends; std::cout << "Write-only buffer holds [" << buf->str() // or user.str() << "]\n"; std::istrstream lit("1 2 3"); // fixed-size read-only buffer buf = lit.rdbuf(); std::cout << "Read-only buffer holds [" << buf->str() // or lit.str() << "]\n"; }
輸出
R/W buffer holds [Test: 1.23] Write-only buffer holds [1.23] Read-only buffer holds [1 2 31 2 3]
[編輯] 另請參閱
訪問輸出緩衝區 ( std::strstream 的公開成員函式) | |
訪問輸出緩衝區 ( std::ostrstream 的公開成員函式) | |
訪問輸出緩衝區 ( std::istrstream 的公開成員函式) |