Namespaces
Variants

std::basic_stringbuf<CharT,Traits,Allocator>:: str

From cppreference.net
(1)
std:: basic_string < CharT, Traits, Allocator > str ( ) const ;
(до C++20)
std:: basic_string < CharT, Traits, Allocator > str ( ) const & ;
(начиная с C++20)
template < class SAlloc >
std:: basic_string < CharT, Traits, SAlloc > str ( const SAlloc & a ) const ;
(2) (начиная с C++20)
std:: basic_string < CharT, Traits, Allocator > str ( ) && ;
(3) (начиная с C++20)
void str ( const std:: basic_string < CharT, Traits, Allocator > & s ) ;
(4)
template < class SAlloc >
void str ( const std:: basic_string < CharT, Traits, SAlloc > & s ) ;
(5) (начиная с C++20)
void str ( std:: basic_string < CharT, Traits, Allocator > && s ) ;
(6) (начиная с C++20)
template < class StringViewLike >
void str ( const StringViewLike & t ) ;
(7) (начиная с C++26)

Получает и устанавливает базовую строку.

В приведенных ниже описаниях, buf и mode являются демонстрационными членами данных объекта * this .

1) Создает и возвращает объект std::basic_string , содержащий копию базовой последовательности символов этого std::basic_stringbuf . Для потоков только для ввода возвращаемая строка содержит символы из диапазона [ eback() , egptr() ) . Для потоков ввода/вывода или только вывода содержит символы от pbase() до последнего символа в последовательности независимо от egptr() и epptr() .
Последовательность символов-членов в буфере, открытом для записи, может быть перераспределена для повышения эффективности. В этом случае возвращаются только инициализированные символы : эти символы получены из строкового аргумента конструктора, строкового аргумента последнего вызова перегруженной функции-сеттера str() или из операции записи. Типичная реализация, использующая перераспределение, поддерживает указатель верхней границы для отслеживания конца инициализированной части буфера, и эта перегрузка возвращает символы от pbase() до указателя верхней границы.
Эквивалентно return std:: basic_string < CharT, Traits, Allocator > ( view ( ) , get_allocator ( ) ) ; .
(начиная с C++20)
2) То же, что и (1) , за исключением того, что a используется для конструирования возвращаемой std::basic_string . Эквивалентно return std:: basic_string < CharT, Traits, SAlloc > ( view ( ) , a ) ; .
Эта перегрузка участвует в разрешении перегрузки только если SAlloc удовлетворяет требованиям Allocator .
3) Создает объект std::basic_string путем перемещающего конструирования из базовой последовательности символов * this в buf . buf может потребоваться предварительная настройка для содержания того же контента, что и в (1) . После этого обнуляет buf и вызывает init_buf_ptrs () , затем возвращает объект std::basic_string .
4) Заменяет базовую символьную последовательность, как если бы было выполнено buf = s , затем вызывает init_buf_ptrs () .
5) То же, что и (4) , за исключением того, что тип аллокатора s не является Allocator .
Эта перегрузка участвует в разрешении перегрузки только если std:: is_same_v < SAlloc, Allocator > равно false .
6) Заменяет базовую последовательность символов, как если бы было выполнено buf = std :: move ( s ) , затем вызывает init_buf_ptrs () .
7) Неявно преобразует t в строковое представление sv как если бы было выполнено std:: basic_string_view < CharT, Traits > sv = t ; , затем заменяет базовую последовательность символов как если бы было выполнено buf = sv , после чего вызывает init_buf_ptrs () .
Эта перегрузка участвует в разрешении перегрузки только если std:: is_convertible_v < const StringViewLike & ,
std:: basic_string_view < CharT, Traits >>
является true .

Содержание

Параметры

s - a std::basic_string object holding the replacement character sequence
t - an object (convertible to std::basic_string_view ) holding the replacement character sequence
a - allocator to use for all memory allocations of the returned std::basic_string
Перевод:
s - объект std::basic_string содержащий последовательность символов замены
t - объект (преобразуемый в std::basic_string_view ) содержащий последовательность символов замены
a - аллокатор для использования во всех выделениях памяти возвращаемого std::basic_string

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

1-3) Объект std::basic_string , содержащий базовую символьную последовательность этого буфера.
4-7) (нет)

Примечания

Эта функция обычно доступна через std::basic_istringstream::str() , std::basic_ostringstream::str() , или std::basic_stringstream::str() .

Feature-test macro Value Std Feature
__cpp_lib_sstream_from_string_view 202306L (C++26) Интерфейс строковых потоков с std::string_view

Пример

#include <iostream>
#include <sstream>
int main()
{
    int n;
    std::istringstream in;  // could also use in("1 2")
    in.rdbuf()->str("1 2"); // set the get area
    in >> n;
    std::cout << "after reading the first int from \"1 2\", the int is " 
              << n << ", str() = \"" << in.rdbuf()->str() << "\"\n"; // or in.str()
    std::ostringstream out("1 2");
    out << 3;
    std::cout << "after writing the int '3' to output stream \"1 2\""
              << ", str() = \"" << out.str() << "\"\n";
    std::ostringstream ate("1 2", std::ios_base::ate); // C++11
    ate << 3;
    std::cout << "after writing the int '3' to append stream \"1 2\""
              << ", str() = \"" << ate.str() << "\"\n";
}

Вывод:

after reading the first int from "1 2", the int is 1, str() = "1 2"
after writing the int '3' to output stream "1 2", str() = "3 2"
after writing the int '3' to append stream "1 2", str() = "1 23"

Отчёты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 432 C++98 1. перегрузка (1) не определяла содержимое
базовой символьной последовательности
2. перегрузка (4) не определяла, как
инициализируются входная и выходная последовательности
оба случая определены
LWG 562 C++98 перегрузка (4) устанавливала epptr() на позицию после последнего базового
символа, если bool ( mode & std:: ios_base :: out ) == true
epptr() может быть установлен
за пределами этой позиции

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

получает или устанавливает содержимое базового строкового устройства
(публичная функция-член std::basic_stringstream<CharT,Traits,Allocator> )
(C++20)
получает представление базовой последовательности символов
(публичная функция-член)