Spec-Zone.ru › C++

std::strstream::str

char* str();
(устарело в C++98)
(удалено в C++26)

Возвращает указатель на начало буфера после его замораживания. Фактически вызывает rdbuf()->str().

Параметры

(нет)

Возвращаемое значение

Указатель на начало буфера в связанном std::strstreambuf или нулевой указатель, если буфер недоступен.

Примечания

Перед вызовом str(), использующим результат как C-строку, буфер потока должен быть завершён нулевым символом. Обычный вывод, например с помощью stream << 1.2, не сохраняет завершающий нулевой символ, поэтому его необходимо добавить явно, обычно с помощью манипулятора std::ends.

После вызова str() динамические потоки становятся замороженными. Перед выходом из области видимости, в которой был создан этот объект strstream, необходимо вызвать freeze(false). В противном случае деструктор вызовет утечку памяти. Кроме того, при дополнительном выводе в замороженный поток данные могут быть усечены при достижении конца выделенного буфера, в результате чего буфер может остаться без завершающего нулевого символа.

Пример

#include <iostream>
#include <strstream>

int main()
{
    std::strstream 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 "

См. также

str
помечает буфер как замороженный и возвращает указатель на начало входной последовательности
(открытая функция-член класса std::strstreambuf)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/strstream/str

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API