Namespaces
Variants

std::basic_stringstream<CharT,Traits,Allocator>:: basic_stringstream

From cppreference.net

(Примечание: В данном фрагменте HTML отсутствует текстовое содержимое для перевода - присутствуют только HTML-теги и атрибуты, которые согласно инструкциям не подлежат переводу)
(1)
(до C++11)
explicit basic_stringstream ( std:: ios_base :: openmode mode ) ;
(начиная с C++11)
basic_stringstream ( )
: basic_stringstream ( std:: ios_base :: in | std:: ios_base :: out ) { }
(2) (начиная с C++11)
explicit basic_stringstream

( const std:: basic_string < CharT, Traits, Allocator > & str,
std:: ios_base :: openmode mode =

std:: ios_base :: in | std:: ios_base :: out ) ;
(3)
explicit basic_stringstream

( std:: basic_string < CharT, Traits, Allocator > && str,
std:: ios_base :: openmode mode =

std:: ios_base :: in | std:: ios_base :: out ) ;
(4) (начиная с C++20)
basic_stringstream ( std:: ios_base :: openmode mode, const Allocator & a ) ;
(5) (начиная с C++20)
template < class SAlloc >

basic_stringstream ( const std:: basic_string < CharT, Traits, SAlloc > & str,

std:: ios_base :: openmode mode, const Allocator & a ) ;
(6) (начиная с C++20)
template < class SAlloc >

basic_stringstream ( const std:: basic_string < CharT, Traits, SAlloc > & str,
const Allocator & a )

: basic_stringstream ( str, std:: ios_base :: in | std:: ios_base :: out , a ) { }
(7) (начиная с C++20)
template < class SAlloc >

explicit basic_stringstream
( const std:: basic_string < CharT, Traits, SAlloc > & str,
std:: ios_base :: openmode mode =

std:: ios_base :: in | std:: ios_base :: out ) ;
(8) (начиная с C++20)
template < class StringViewLike >

explicit basic_stringstream
( const StringViewLike & t,
std:: ios_base :: openmode mode =

std:: ios_base :: in | std:: ios_base :: out ) ;
(9) (начиная с C++26)
template < class StringViewLike >

basic_stringstream ( const StringViewLike & t,

std:: ios_base :: openmode mode, const Allocator & a ) ;
(10) (начиная с C++26)
template < class StringViewLike >
basic_stringstream ( const StringViewLike & t, const Allocator & a ) ;
(11) (начиная с C++26)
basic_stringstream ( basic_stringstream && other ) ;
(12) (начиная с C++11)

Создает новый строковый поток.

Дано

std::basic_iostream база и демонстрационный элемент данных sb инициализируются следующим образом.

Перегрузка
конструкторов
std::basic_iostream база sb
(1) base_type ( std:: addressof ( sb ) ) [1] buf_type ( mode )
(2) buf_type ( std:: ios_base :: in | std:: ios_base :: out )
(3) buf_type ( str, mode )
(4) buf_type ( std :: move ( str ) , mode )
(5) buf_type ( mode, a )
(6) buf_type ( str, mode, a )
(7) buf_type ( str, std:: ios_base :: in | std:: ios_base :: out , a )
(8) buf_type ( str, mode )
(9) std:: addressof ( sb ) { t, mode, Allocator ( ) }
(10) { t, mode, a }
(11) { t, std:: ios_base :: in | std:: ios_base :: out , a }
(12) перемещающий конструктор из other 's std::basic_iostream базы перемещающий конструктор из other. sb
  1. Базовый класс std::basic_iostream инициализировался с помощью base_type ( & sb ) (для перегрузок (1,3) ) до C++11.
8) Эта перегрузка участвует в разрешении перегрузки только если std:: is_same_v < SAlloc, Allocator > равно false .
9-11) Эти перегрузки участвуют в разрешении перегрузки только если std:: is_convertible_v < const StringViewLike & , std:: basic_string_view < CharT, Traits >> равно true .

Содержание

Параметры

str - строка для использования в качестве начального содержимого строкового потока
t - объект (преобразуемый в std::basic_string_view ) для использования в качестве начального содержимого строкового потока
a - аллокатор, используемый для выделения памяти под содержимое строкового потока
mode - определяет режим открытия потока. Это BitmaskType , определены следующие константы:
Константа Объяснение
app переход в конец потока перед каждой записью
binary открытие в бинарном режиме
in открытие для чтения
out открытие для записи
trunc удаление содержимого потока при открытии
ate переход в конец потока сразу после открытия
noreplace (C++23) открытие в эксклюзивном режиме
other - другой строковый поток для использования в качестве источника

Примечания

Создание одноразовых объектов basic_stringstream в тесном цикле, например при использовании для преобразования строк, может быть значительно более затратным, чем вызов str() для повторного использования того же объекта.

Feature-test macro Value Std Feature
__cpp_lib_sstream_from_string_view 202306L (C++26) Интерфейс между std::stringstream и std::string_view , ( 9-11 )

Пример

#include <iostream>
#include <sstream>
int main()
{
    // конструктор по умолчанию (поток ввода/вывода)
    std::stringstream buf1;
    buf1 << 7;
    int n = 0;
    buf1 >> n;
    std::cout << "buf1 = " << buf1.str() << " n = " << n << '\n';
    // входной поток
    std::istringstream inbuf("-10");
    inbuf >> n;
    std::cout << "n = " << n << '\n';
    // выходной поток в режиме добавления (C++11)
    std::ostringstream buf2("test", std::ios_base::ate);
    buf2 << '1';
    std::cout << buf2.str() << '\n';
}

Вывод:

buf1 = 7 n = 7
n = -10
test1

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

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

DR Applied to Behavior as published Correct behavior
P0935R0 C++11 конструктор по умолчанию был explicit сделан implicit

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

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