std::ostrstream::ostrstream
来自cppreference.com
< 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) 若 mode 中未设置
app
位,则通过调用 strstreambuf(s, n, s) 构造缓冲区。若以 s 指向其首元素的数组中的元素少于 n 个,则行为未定义。b) 若 mode 中设置了
app
位,则通过调用 strstreambuf(s, n, s + std::strlen(s)) 构造缓冲区。若以 s 指向其首元素的数组中的元素少于 n 个,或若数组不含合法的空终止字符序列,则行为未定义。参数
s | - | 用作输出缓冲区的 char 数组 | ||||||||||||||||
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 的公开成员函数) |