Namespaces
Variants

std::strstreambuf:: str

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

Вызывает freeze() , затем возвращает копию начального указателя области получения, std::streambuf::eback() .

Начало области получения для всех доступных для записи std::strstreambuf объектов, созданных через интерфейс, предоставляемый std::strstream , также является началом области записи.

Содержание

Параметры

(нет)

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

Копия eback() , которая может быть нулевым указателем.

Примечания

Эта функция обычно вызывается через интерфейс std::strstream .

Вызов freeze() гарантирует, что возвращаемый указатель остается действительным до следующего явного вызова freeze ( false ) : в противном случае (при использовании динамического буфера) любая операция вывода может вызвать перераспределение буфера, что сделает указатель недействительным. Это также вызывает утечку памяти в деструкторе std::strstreambuf , если freeze ( false ) не вызывается до уничтожения буфера (или, что более распространено, управляющего им std:: strstream ).

Пример

#include <iostream>
#include <strstream>
int main()
{
    std::strstream dyn; // динамически выделяемый буфер для чтения/записи
    dyn << "Test: " << 1.23 << std::ends;
    std::strstreambuf* buf = dyn.rdbuf();
    std::cout << "Буфер чтения/записи содержит [" << buf->str() // или dyn.str()
              << "]\n";
    dyn.freeze(false); // после вызова .str() на динамическом strstream
    char arr[10];
    std::ostrstream user(arr, 10); // буфер фиксированного размера только для записи
    buf = user.rdbuf();
    user << 1.23 << std::ends;
    std::cout << "Буфер только для записи содержит [" << buf->str() // или user.str()
              << "]\n";
    std::istrstream lit("1 2 3"); // буфер фиксированного размера только для чтения
    buf = lit.rdbuf();
    std::cout << "Буфер только для чтения содержит [" << buf->str() // или lit.str()
              << "]\n";
}

Вывод:

Буфер чтения/записи содержит [Test: 1.23]
Буфер только для записи содержит [1.23]
Буфер только для чтения содержит [1 2 31 2 3]

Смотрите также

обращается к выходному буферу
(публичная функция-член std::strstream )
обращается к выходному буферу
(публичная функция-член std::ostrstream )
обращается к выходному буферу
(публичная функция-член std::istrstream )