std::strstreambuf:: str
|
char
*
str
(
)
;
|
(C++98 中已弃用)
(C++26 中移除) |
|
调用 freeze() ,随后返回获取区域起始指针的副本,即 std::streambuf::eback() 。
对于通过
std::strstream
接口构造的所有可写
std::strstreambuf
对象,获取区域的起始位置同时也是放置区域的起始位置。
目录 |
参数
(无)
返回值
eback() 的副本,可能为空指针。
注释
此函数通常通过 std::strstream 接口调用。
调用
freeze()
可确保返回的指针在下次显式调用
freeze
(
false
)
前保持有效:否则(对于动态缓冲区)任何输出操作都可能触发缓冲区重新分配,从而导致指针失效。这还会在
std::strstreambuf
的析构函数中引发内存泄漏,除非在缓冲区(或更常见的、管理该缓冲区的
std::
strstream
)被销毁前调用
freeze
(
false
)
。
示例
#include <iostream> #include <strstream> int main() { std::strstream dyn; // 动态分配的读/写缓冲区 dyn << "Test: " << 1.23 << std::ends; std::strstreambuf* buf = dyn.rdbuf(); std::cout << "R/W buffer holds [" << buf->str() // 或 dyn.str() << "]\n"; dyn.freeze(false); // 在动态 strstream 上调用 .str() 后 char arr[10]; std::ostrstream user(arr, 10); // 固定大小的只写缓冲区 buf = user.rdbuf(); user << 1.23 << std::ends; std::cout << "Write-only buffer holds [" << buf->str() // 或 user.str() << "]\n"; std::istrstream lit("1 2 3"); // 固定大小的只读缓冲区 buf = lit.rdbuf(); std::cout << "Read-only buffer holds [" << buf->str() // 或 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
的公开成员函数)
|