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; // dynamically-allocated output buffer
dyn << "Test: " << 1.23; // not adding std::ends to demonstrate append behavior
std::cout << "The output stream holds \"";
std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
// the stream is now frozen due to 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) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/ostrstream/str