Spec-Zone.ru › C++

std::strstreambuf::str

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

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

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

Параметры

(нет)

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

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

Примечания

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

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

Пример

#include <iostream>
#include <strstream>

int main()
{
    std::strstream dyn; // dynamically-allocated read/write buffer
    dyn << "Test: " << 1.23 << std::ends;
    std::strstreambuf* buf = dyn.rdbuf();
    std::cout << "R/W buffer holds [" << buf->str() // or dyn.str()
              << "]\n";
    dyn.freeze(false); // after calling .str() on a dynamic strstream

    char arr[10];
    std::ostrstream user(arr, 10); // fixed-size write-only buffer
    buf = user.rdbuf();
    user << 1.23 << std::ends;
    std::cout << "Write-only buffer holds [" << buf->str() // or user.str()
              << "]\n";

    std::istrstream lit("1 2 3"); // fixed-size read-only buffer
    buf = lit.rdbuf();
    std::cout << "Read-only buffer holds [" << buf->str() // or lit.str()
              << "]\n";
}

Вывод:

R/W buffer holds [Test: 1.23]
Write-only buffer holds [1.23]
Read-only buffer holds [1 2 31 2 3]

См. также

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

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

Spec-Zone.ru

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