定义于头文件 <sstream>
template< class CharT, |
(C++11 前) | |
template< class CharT, |
(C++11 起) |
类模板 std::basic_stringstream
实现基于字符串的流上的输入与输出操作。它等效地存储一个 std::basic_string 的实例,并在其上进行输入与输出操作。
在低层,该类实际上包装 std::basic_stringbuf 的未处理字符串设备到 std::basic_iostream 的高层接口中。提供到独有 std::basic_stringbuf
成员的完整接口。
亦为常用字符类型定义二个特化:
类型 | 定义 |
stringstream |
basic_stringstream<char> |
wstringstream |
basic_stringstream<wchar_t> |
成员函数
交换两个字符串流
std::basic_stringstream::swap
void swap( basic_stringstream& other ); |
(C++11 起) |
交换流与 other
的状态。
通过调用 basic_iostream<CharT, Traits>::swap(other) 和 rdbuf()->swap(*other.rdbuf()) 进行。
参数
other | - | 要交换状态的流 |
返回值
(无)文章来源:https://www.toymoban.com/news/detail-694204.html
调用示例
#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;
}
非成员函数
特化 std::swap 算法
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 ); |
为 std::basic_istringstream 特化 std::swap 算法。交换 lhs
与 rhs
的状态。等效地调用 lhs.swap(rhs) 。
参数
lhs, rhs | - | 要交换状态的流 |
返回值
(无)
异常
(无)
调用示例
#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;
}
输出
文章来源地址https://www.toymoban.com/news/detail-694204.html
到了这里,关于c++11 标准模板(STL)(std::basic_stringstream)(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!