std::ostrstream:: ostrstream
From cppreference.net
<
cpp
|
io
|
ostrstream
|
ostrstream
(
)
;
|
(1) |
(C++98 中已弃用)
(C++26 中移除) |
|
ostrstream
(
char
*
s,
int
n,
std::
ios_base
::
openmode
mode
=
std::
ios_base
::
out
)
;
|
(2) |
(C++98 中已弃用)
(C++26 中移除) |
构造新的输出 strstream 及其底层 std::strstreambuf 。
2)
使用底层
std::strstreambuf
成员的地址初始化基类,该成员通过两种可能方式之一进行初始化,两种方式均写入用户提供的固定大小数组:
a)
若
app
位未在
mode
中设置,则通过调用
strstreambuf
(
s, n, s
)
构造缓冲区。若指向
s
的数组元素数量少于
n
,则行为未定义
b)
若
mode
中的
app
位被设置,则通过调用
strstreambuf
(
s, n, s
+
std::
strlen
(
s
)
)
构造缓冲区。若由
s
指向首元素的数组中元素数量少于
n
,或该数组不包含有效的空终止字符序列,则行为未定义。
参数
| s | - | 用作输出缓冲区的字符数组 | ||||||||||||||||
| n | - | 用作输出缓冲区的数组大小 | ||||||||||||||||
| mode | - |
指定流打开模式。为位掩码类型,定义了以下常量(但仅使用
app
):
|
示例
运行此代码
#include <iostream> #include <strstream> int main() { std::ostrstream s1; // 动态缓冲区 s1 << 1 << ' ' << 3.14 << " example\n" << std::ends; std::cout << s1.str(); s1.freeze(false); char arr[15] = "Hello"; std::ostrstream s2(arr, sizeof arr, std::ios_base::app); s2 << ", world!" << std::ends; std::cout << s2.str() << '\n'; std::cout << arr << '\n'; // 流使用提供的数组 }
输出:
1 3.14 example Hello, world! Hello, world!
参见
构造
strstreambuf
对象
(
std::strstreambuf
的公开成员函数)
|
|
构造
istrstream
对象,可选择性地分配缓冲区
(
std::istrstream
的公开成员函数)
|
|
构造
strstream
对象,可选择性地分配缓冲区
(
std::strstream
的公开成员函数)
|