Spec-Zone.ru › C++

std::strstreambuf::str

char* str();

Вызывает 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; // 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/w/cpp/io/strstreambuf/str

Spec-Zone.ru

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