Namespaces
Variants

std::ostrstream:: ostrstream

From cppreference.net
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 ):
Константа Объяснение
app переход в конец потока перед каждой записью
binary открытие в бинарном режиме
in открытие для чтения
out открытие для записи
trunc очистка содержимого потока при открытии
ate переход в конец потока сразу после открытия
noreplace (C++23) открытие в эксклюзивном режиме

Пример

#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 )