std::ostrstream:: str
|
char
*
str
(
)
;
|
(устарело в C++98)
(удалено в C++26) |
|
Возвращает указатель на начало буфера после его заморозки. Фактически вызывает rdbuf ( ) - > str ( ) .
Содержание |
Параметры
(нет)
Возвращаемое значение
Указатель на начало буфера в связанном std:: strstreambuf или нулевой указатель, если буфер недоступен.
Примечания
Перед вызовом
str()
, который использует результат как C-строку, буфер потока должен быть нуль-терминирован. Обычный вывод, такой как
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 << "The output stream holds \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; // поток теперь заморожен из-за вызова str() dyn << " More text" << std::ends; std::cout << "The output stream holds \""; std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; dyn.freeze(false); }
Возможный вывод:
The stream holds "Test: 1.23" The stream holds "Test: 1.23 More "
Смотрите также
|
помечает буфер замороженным и возвращает указатель на начало входной последовательности
(публичная функция-член
std::strstreambuf
)
|