定义于头文件 
template<

class CharT,
class Traits = std::char_traits

> class basic_stringstream;

(C++11 前)
template<

class CharT,
class Traits = std::char_traits,
class Allocator = std::allocator

> class basic_stringstream;

(C++11 起)

类模板 std::basic_stringstream 实现基于字符串的流上的输入与输出操作。它等效地存储一个 std::basic_string 的实例,并在其上进行输入与输出操作。

在低层,该类实际上包装 std::basic_stringbuf 的未处理字符串设备到 std::basic_iostream 的高层接口中。提供到独有 std::basic_stringbuf 成员的完整接口。

亦为常用字符类型定义二个特化:

类型定义
stringstreambasic_stringstream
wstringstreambasic_stringstream

成员函数

交换两个字符串流

std::basic_stringstream::swap

void swap( basic_stringstream& other );

(C++11 起)

交换流与 other 的状态。

通过调用 basic_iostream::swap(other) 和 rdbuf()->swap(*other.rdbuf()) 进行。

参数

other要交换状态的流

返回值

(无)

调用示例

#include #include #include int main(){//3) 以 str 的副本为底层字符串设备的初始内容。std::string string1 = "I am a handsome programmer";std::basic_stringstreambasic_stringstream1(string1, std::ios_base::in | std::ios_base::out);std::cout << "basic_stringstream1: "<< basic_stringstream1.str() << std::endl;std::cout << "basic_stringstream1 rdstate: ";std::cout << basic_stringstream1.rdstate() << std::endl;std::string string2 = "I am a super handsome guy";std::basic_stringstreambasic_stringstream2(string2, std::ios_base::in | std::ios_base::out);std::cout << "basic_stringstream2: "<< basic_stringstream2.str() << std::endl;std::cout << "basic_stringstream2 rdstate: ";std::cout << basic_stringstream2.rdstate() << std::endl;std::cout << std::endl;//交换流与 other 的状态。//通过调用 basic_istream::swap(other)//和 rdbuf()->swap(*other.rdbuf()) 进行。basic_stringstream1.swap(basic_stringstream2);std::cout << "after swap: " << std::endl;std::cout << "basic_stringstream1: "<< basic_stringstream1.str() << std::endl;std::cout << "basic_stringstream1 rdstate: ";std::cout << basic_stringstream1.rdstate() << std::endl;std::cout << "basic_stringstream2: "<< basic_stringstream2.str() << std::endl;std::cout << "basic_stringstream2 rdstate: ";std::cout << basic_stringstream2.rdstate() << std::endl;return 0;}

非成员函数

特化 std::swap 算法

std::swap(std::basic_istringstream)
template

void swap( std::basic_istringstream& lhs,

std::basic_istringstream& rhs );

为 std::basic_istringstream 特化 std::swap 算法。交换 lhsrhs 的状态。等效地调用 lhs.swap(rhs) 。

参数

lhs, rhs要交换状态的流

返回值

(无)

异常

(无)

调用示例

#include #include #include int main(){//3) 以 str 的副本为底层字符串设备的初始内容。std::string string1 = "I am a handsome programmer";std::basic_ostringstreambasic_ostringstream1(string1, std::ios_base::out);std::cout << "basic_ostringstream1: "<< basic_ostringstream1.str() << std::endl;std::cout << "basic_ostringstream1 rdstate: ";std::cout << basic_ostringstream1.rdstate() << std::endl;std::string string2 = "I am a super handsome guy";std::basic_ostringstreambasic_ostringstream2(string2, std::ios_base::out);std::cout << "basic_ostringstream2: "<< basic_ostringstream2.str() << std::endl;std::cout << "basic_ostringstream2 rdstate: ";std::cout << basic_ostringstream2.rdstate() << std::endl;std::cout << std::endl;//为 std::basic_ostringstream 特化 std::swap 算法。//交换 lhs 与 rhs 的状态。等效地调用 lhs.swap(rhs)std::swap(basic_ostringstream1, basic_ostringstream2);std::cout << "after swap: " << std::endl;std::cout << "basic_ostringstream1: "<< basic_ostringstream1.str() << std::endl;std::cout << "basic_ostringstream1 rdstate: ";std::cout << basic_ostringstream1.rdstate() << std::endl;std::cout << "basic_ostringstream2: "<< basic_ostringstream2.str() << std::endl;std::cout << "basic_ostringstream2 rdstate: ";std::cout << basic_ostringstream2.rdstate() << std::endl;return 0;}

输出