c++11 standard template (STL) (std::basic_stringstream) (4)

Defined in the header file <sstream>
template<

    class CharT,
    class Traits = std::char_traits<CharT>

> class basic_stringstream;
(until C++11)
template<

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

> class basic_stringstream;
(since C++11)

Class template std::basic_stringstreamImplements input and output operations on string-based streams. It equivalently stores an instance of std::basic_string and performs input and output operations on it.

At a low level, this class actually wraps the raw string device of std::basic_stringbuf into the high-level interface of std::basic_iostream. Provides std::basic_stringbufa complete interface to exclusive members.

Two specializations are also defined for common character types:

type definition
stringstream basic_stringstream<char>
wstringstream basic_stringstream<wchar_t>

member function

swaps two string streams

std::basic_stringstream::swap

void swap( basic_stringstream& other );

(since C++11)

Exchange otherthe state of the stream with the .

By calling basic_iostream<CharT, Traits>::swap(other) and rdbuf()->swap(*other.rdbuf()).

parameter

other - stream to exchange state

return value

(none)

call example

#include <sstream>
#include <string>
#include <iostream>

int main()
{
    //3) 以 str 的副本为底层字符串设备的初始内容。
    std::string string1 = "I am a handsome programmer";
    std::basic_stringstream<char>
    basic_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_stringstream<char>
    basic_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<CharT, Traits>::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;
}

non-member function

specialization of the std::swap algorithm

std::swap(std::basic_istringstream)
template< class CharT, class Traits, class Alloc >

void swap( std::basic_istringstream<CharT,Traits,Alloc>& lhs,

           std::basic_istringstream<CharT,Traits,Alloc>& rhs );

Specializes the std::swap algorithm for std::basic_istringstream. Swap the state of lhsand rhs. Equivalently call lhs.swap(rhs).

parameter

lhs, rhs - stream to exchange state

return value

(none)

abnormal

(none)

 call example

#include <sstream>
#include <string>
#include <iostream>

int main()
{
    //3) 以 str 的副本为底层字符串设备的初始内容。
    std::string string1 = "I am a handsome programmer";
    std::basic_ostringstream<char>
    basic_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_ostringstream<char>
    basic_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;
}

output

Guess you like

Origin blog.csdn.net/qq_40788199/article/details/132522465