Namespaces
Variants

std::basic_istringstream<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 起)

管理底层字符串对象的内容。

1) 返回底层字符串的副本。等价于 return rdbuf ( ) - > str ( ) ;
2) 返回底层字符串的副本,使用 a 作为分配器。等效于 return rdbuf ( ) - > str ( a ) ;
3) 返回通过移动构造从底层字符串生成的字符串。等价于 return std :: move ( * rdbuf ( ) ) . str ( ) ;
4,5) 替换底层字符串的内容。等价于 rdbuf ( ) - > str ( s ) ;
6) 替换底层字符串的内容。等价于 rdbuf ( ) - > str ( std :: move ( s ) ) ;
7) 替换底层字符串的内容。等效于 rdbuf ( ) - > str ( t ) ;
此重载仅当 is_convertible_v < const T & , basic_string_view < charT, traits >> true 时参与重载决议。

目录

参数

s - 底层字符串的新内容
t - 用作底层字符串新内容的对象(可转换为 std::basic_string_view
a - 用于构造返回字符串的分配器

返回值

1,2) 底层字符串对象的副本。
3) 一个通过底层字符串对象移动构造的字符串。
4-7) (无)

注释

str 返回的底层字符串副本是一个临时对象,将在表达式结束时被析构,因此直接在 str ( ) 的结果上调用 c_str() (例如在 auto * ptr = out. str ( ) . c_str ( ) ; 中)会导致悬垂指针。

功能测试 标准 功能特性
__cpp_lib_sstream_from_string_view 202306L (C++26) std::stringstream std::string_view 的交互操作 ( 7 )

示例

#include <iostream>
#include <sstream>
int main()
{
    int n;
    std::istringstream in; // 也可使用 in("1 2")
    in.str("1 2");
    in >> n;
    std::cout << "从 \"1 2\" 读取第一个整数后,该整数为 "
              << n << ", str() = \"" << in.str() << "\"\n";
    std::ostringstream out("1 2");
    out << 3;
    std::cout << "向输出流 \"1 2\" 写入整数 '3' 后"
              << ", str() = \"" << out.str() << "\"\n";
    std::ostringstream ate("1 2", std::ios_base::ate);
    ate << 3;
    std::cout << "向追加流 \"1 2\" 写入整数 '3' 后"
              << ", str() = \"" << ate.str() << "\"\n";
}

输出:

从 "1 2" 读取第一个整数后,该整数为 1, str() = "1 2"
向输出流 "1 2" 写入整数 '3' 后, str() = "3 2"
向追加流 "1 2" 写入整数 '3' 后, str() = "1 23"

另请参阅

返回底层原始字符串设备对象
(公开成员函数)
替换或获取关联字符串的副本
( std::basic_stringbuf<CharT,Traits,Allocator> 的公开成员函数)