std::basic_stringbuf<CharT,Traits,Allocator>:: str
| (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 .
std::basic_stringbuf
. Для потоков только для ввода возвращаемая строка содержит символы из диапазона
[
eback()
,
egptr()
)
. Для потоков ввода/вывода или только вывода содержит символы от
pbase()
до последнего символа в последовательности независимо от
egptr()
и
epptr()
.
-
-
Последовательность символов-членов в буфере, открытом для записи, может быть перераспределена для повышения эффективности. В этом случае возвращаются только
инициализированные символы
: эти символы получены из строкового аргумента конструктора, строкового аргумента последнего вызова перегруженной функции-сеттера
str()или из операции записи. Типичная реализация, использующая перераспределение, поддерживает указатель верхней границы для отслеживания конца инициализированной части буфера, и эта перегрузка возвращает символы от pbase() до указателя верхней границы.
-
Последовательность символов-членов в буфере, открытом для записи, может быть перераспределена для повышения эффективности. В этом случае возвращаются только
инициализированные символы
: эти символы получены из строкового аргумента конструктора, строкового аргумента последнего вызова перегруженной функции-сеттера
|
(начиная с C++20) |
SAlloc
удовлетворяет требованиям
Allocator
.
init_buf_ptrs
()
, затем возвращает объект
std::basic_string
.
init_buf_ptrs
()
.
Allocator
.
init_buf_ptrs
()
.
init_buf_ptrs
()
.
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 |
Возвращаемое значение
Примечания
Эта функция обычно доступна через 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)
|
получает представление базовой последовательности символов
(публичная функция-член) |