std::strstreambuf::str
来自 cppreference.cn
< cpp | io | strstreambuf
char* str(); |
(deprecated in C++98) (removed in 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; // 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 的公共成员函数) |