std::ostrstream:: str
|
char
*
str
(
)
;
|
(C++98 中已弃用)
(C++26 中移除) |
|
返回指向缓冲区起始位置的指针,并在返回前冻结该缓冲区。此操作实际上等效于调用 rdbuf ( ) - > str ( ) 。
目录 |
参数
(无)
返回值
指向关联的 std:: strstreambuf 中缓冲区起始位置的指针,若无可用缓冲区则为空指针。
注释
在调用将结果用作C字符串的
str()
之前,流缓冲区必须以空字符结尾。常规输出(例如
stream
<<
1.2
)不会存储空终止符,必须显式追加,通常使用操纵器
std::ends
。
在调用
str()
后,动态流会进入冻结状态。在此
ostrstream
对象所在作用域结束前,必须调用
freeze(false)
,否则析构函数将导致内存泄漏。此外,对已冻结流进行额外输出时,当达到分配缓冲区末尾后可能会被截断,这可能使缓冲区不以空字符结尾。
示例
#include <iostream> #include <strstream> int main() { std::ostrstream dyn; // 动态分配的输出缓冲区 dyn << "Test: " << 1.23; // 不添加 std::ends 以演示追加行为 std::cout << "输出流包含 \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; // 由于调用 str(),流现在处于冻结状态 dyn << " 更多文本" << std::ends; std::cout << "输出流包含 \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; dyn.freeze(false); }
可能的输出:
输出流包含 "Test: 1.23" 输出流包含 "Test: 1.23 More "
参见
|
标记缓冲区为冻结状态并返回输入序列的起始指针
(
std::strstreambuf
的公开成员函数)
|