c++11 标准模板(STL)(std::basic_stringstream)(四)

这篇具有很好参考价值的文章主要介绍了c++11 标准模板(STL)(std::basic_stringstream)(四)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

定义于头文件 <sstream>
template<

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

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

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

> class basic_stringstream;
(C++11 起)

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

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

c++11 标准模板(STL)(std::basic_stringstream)(四),C++标准库模板(STL)-输入/输出库,c++,标准库模板,字符串操作,stringstream,实现高层字符串流输入/输出操作

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

类型 定义
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 - 要交换状态的流

返回值

(无)

调用示例

#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 算法。交换 lhsrhs 的状态。等效地调用 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;
}
输出

c++11 标准模板(STL)(std::basic_stringstream)(四),C++标准库模板(STL)-输入/输出库,c++,标准库模板,字符串操作,stringstream,实现高层字符串流输入/输出操作文章来源地址https://www.toymoban.com/news/detail-694204.html

到了这里,关于c++11 标准模板(STL)(std::basic_stringstream)(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++11 标准模板(STL)(std::basic_istream)(三)

    template     class CharT,     class Traits = std::char_traitsCharT class basic_istream : virtual public std::basic_iosCharT, Traits  类模板 basic_istream 提供字符流上的高层输入支持。受支持操作包含带格式的输入(例如整数值或空白符分隔的字符与字符串)和无格式输入(例如未处理字符和字符数组)

    2024年02月13日
    浏览(37)
  • c++11 标准模板(STL)(std::bitset)(四)

    template std::size_t N class bitset;  类模板 bitset 表示一个 N 位的固定大小序列。可以用标准逻辑运算符操作位集,并将它与字符串和整数相互转换。 bitset 满足 可复制构造 (CopyConstructible) 及 可复制赋值 (CopyAssignable) 的要求。 模板形参 N - 要为 bitset 分配存储的位数 成员类型 refer

    2024年02月08日
    浏览(40)
  • c++11 标准模板(STL)(std::bitset)(三)

    template std::size_t N class bitset;  类模板 bitset 表示一个 N 位的固定大小序列。可以用标准逻辑运算符操作位集,并将它与字符串和整数相互转换。 bitset 满足 可复制构造 (CopyConstructible) 及 可复制赋值 (CopyAssignable) 的要求。 模板形参 N - 要为 bitset 分配存储的位数 成员类型 refer

    2024年02月08日
    浏览(46)
  • c++11 标准模板(STL)(std::queue)(五)

    template     class T,     class Container = std::dequeT class queue; std::queue 类是容器适配器,它给予程序员队列的功能——尤其是 FIFO (先进先出)数据结构。 类模板表现为底层容器的包装器——只提供特定的函数集合。 queue 在底层容器尾端推入元素,从首端弹出元素。 template class

    2023年04月21日
    浏览(79)
  • c++ 11标准模板(STL) std::vector (二)

    template     class T,     class Allocator = std::allocatorT class vector; (1) namespace pmr {     template class T     using vector = std::vectorT, std::pmr::polymorphic_allocatorT; } (2) (C++17 起) 1) std::vector 是封装动态数组的顺序容器。 2) std::pmr::vector 是使用多态分配器的模板别名。 元素相继存储,这意味着不

    2024年02月02日
    浏览(53)
  • c++11 标准模板(STL)(std::priority_queue)(四)

    template     class T,     class Container = std::vectorT,     class Compare = std::lesstypename Container::value_type class priority_queue; priority_queue 是容器适配器,它提供常数时间的(默认)最大元素查找,对数代价的插入与释出。 可用用户提供的 Compare 更改顺序,例如,用 std::greaterT 将导致最小元

    2024年02月01日
    浏览(43)
  • c++11 标准模板(STL)(std::unordered_multimap)(九)

    template     class Key,     class T,     class Hash = std::hashKey,     class KeyEqual = std::equal_toKey,     class Allocator = std::allocator std::pairconst Key, T class unordered_multimap; (1) (C++11 起) namespace pmr {     template class Key, class T,               class Hash = std::hashKey,               class Pred = std::equa

    2023年04月09日
    浏览(37)
  • c++标准模板(STL)(std::array)(三)

    template     class T,     std::size_t N struct array; (C++11 起   std::array 是封装固定大小数组的容器。 此容器是一个聚合类型,其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数组,它不会自动退化成 T* 。它能作为聚合类型聚合初始化,只要

    2024年02月02日
    浏览(47)
  • C++ 编译错误std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >的两种解决办法

    目录 1,错误描述 2,解决办法 3,一种特殊情况 C++程序编译阶段有个常见的错误,std::__cxx11::basic_***,可能是string,list等,也许程序在其他环境完成编译,在运行环境报错,也许是正在编译阶段报错。 简单来说,这个错误的原因是因为C++不同版本对string、list的定义不同。比

    2024年02月10日
    浏览(36)
  • 解决 undefined reference to cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>,....

    在使用opencv时候可能会遇到 undefined reference to cv::imread(std::__cxx11::basic_stringchar, std::char_traitschar, std::allocatorchar const, int)\\\' 其主旨原因是使用的函数版本和引用的库函数版本不一至,要确保使用的函数和引用的库函数版本一致。 1、如何知道函数版本和引用的是否一样 1.1使用nm对

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包