Namespaces
Variants

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

From cppreference.net

(1)
explicit basic_ostringstream ( std:: ios_base :: openmode mode =
std:: ios_base :: out ) ;
(C++11 前)
explicit basic_ostringstream ( std:: ios_base :: openmode mode ) ;
(C++11 起)
basic_ostringstream ( )
: basic_ostringstream ( std:: ios_base :: out ) { }
(2) (C++11 起)
explicit basic_ostringstream

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

std:: ios_base :: out ) ;
(3)
explicit basic_ostringstream

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

std:: ios_base :: out ) ;
(4) (C++20 起)
basic_ostringstream ( std:: ios_base :: openmode mode, const Allocator & a ) ;
(5) (C++20 起)
template < class SAlloc >

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

std:: ios_base :: openmode mode, const Allocator & a ) ;
(6) (C++20 起)
template < class SAlloc >

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

: basic_ostringstream ( str, std:: ios_base :: out , a ) { }
(7) (C++20 起)
template < class SAlloc >

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

std:: ios_base :: out ) ;
(8) (C++20 起)
template < class StringViewLike >

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

std:: ios_base :: out ) ;
(9) (C++26 起)
template < class StringViewLike >

basic_ostringstream ( const StringViewLike & t,

std:: ios_base :: openmode mode, const Allocator & a ) ;
(10) (C++26 起)
template < class StringViewLike >
basic_ostringstream ( const StringViewLike & t, const Allocator & a ) ;
(11) (C++26 起)
basic_ostringstream ( basic_ostringstream && other ) ;
(12) (C++11 起)

构造新的字符串流。

给定

std::basic_ostream 基类与 仅用于说明的数据成员 sb 按以下方式完成初始化。


std::basic_ostream 基类 sb
(1) base_type ( std:: addressof ( sb ) ) [1] buf_type ( mode | std:: ios_base :: out )
(2) buf_type ( std:: ios_base :: out )
(3) buf_type ( str, mode | std:: ios_base :: out )
(4) buf_type ( std :: move ( str ) , mode | std:: ios_base :: out )
(5) buf_type ( mode | std:: ios_base :: out , a )
(6) buf_type ( str, mode | std:: ios_base :: out , a )
(7) buf_type ( str, std:: ios_base :: out , a )
(8) buf_type ( str, mode | std:: ios_base :: out )
(9) std:: addressof ( sb ) { t, mode | std:: ios_base :: out , Allocator ( ) }
(10) { t, mode | std:: ios_base :: out , a }
(11) { t, std:: ios_base :: out , a }
(12) other std::basic_ostream 基类移动构造 other. sb 移动构造
  1. 在 C++11 之前, std::basic_iostream 基类是通过 base_type ( & sb ) 初始化的(适用于重载版本 (1,3) )。
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_ostringstream 对象(例如用于字符串转换时),其开销可能显著高于调用 str() 复用同一对象。

功能测试 标准 功能
__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 适用范围 发布时的行为 正确行为
P0935R0 C++11 默认构造函数为显式 改为隐式

另请参阅

获取或设置底层字符串设备对象的内容
(公开成员函数)
构造 basic_stringbuf 对象
( std::basic_stringbuf<CharT,Traits,Allocator> 的公开成员函数)