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 .
1)
Конструирует базовый
std::strstreambuf
конструктором по умолчанию, что создаёт динамически растущий буфер, и инициализирует базовый класс адресом члена
strstreambuf
.
2)
Инициализировал базовый класс адресом базового
std::strstreambuf
члена, который инициализируется одним из двух возможных способов, оба из которых записывают в предоставленный пользователем массив фиксированного размера:
a)
если бит
app
не установлен в
mode
, создаёт буфер вызовом
strstreambuf
(
s, n, s
)
. Поведение не определено, если в массиве, на первый элемент которого указывает
s
, содержится менее
n
элементов.
b)
если бит
app
установлен в
mode
, создаёт буфер путём вызова
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
)
|