c++11 标准模板(STL)(std::basic_istringstream)(五)

复制代码
定义于头文件 <sstream>

|-------------------------------------------------------------------------------------------------------------------------------------------|---|-----------|
| template< class CharT, class Traits = std::char_traits<CharT> > class basic_istringstream; | | (C++11 前) |
| template< class CharT, class Traits = std::char_traits<CharT>, class Allocator = std::allocator<CharT> > class basic_istringstream; | | (C++11 起) |

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

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

亦定义对于常用字符类型的二个特化:

|------------------|--------------------------------|
| 类型 | 定义 |
| istringstream | basic_istringstream<char> |
| wistringstream | basic_istringstream<wchar_t> |

非成员函数

特化 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_istringstream<char> basic_istringstream1(string1, std::ios_base::in);
    std::cout << "basic_istringstream1: " << basic_istringstream1.str() << std::endl;
    std::cout << "basic_istringstream1 rdstate: ";
    std::cout << basic_istringstream1.rdstate() << std::endl;

    std::string string2 = "I am a super handsome guy";
    std::basic_istringstream<char> basic_istringstream2(string2, std::ios_base::in);
    std::cout << "basic_istringstream2: " << basic_istringstream2.str() << std::endl;
    basic_istringstream2.setstate(std::ios_base::badbit);
    std::cout << "basic_istringstream2 rdstate: ";
    std::cout << basic_istringstream2.rdstate() << std::endl;
    std::cout << std::endl;

    //为 std::basic_istringstream 特化 std::swap 算法。
    //交换 lhs 与 rhs 的状态。等效地调用 lhs.swap(rhs)
    std::swap(basic_istringstream1, basic_istringstream2);
    std::cout << "after swap: " << std::endl;

    basic_istringstream1.seekg(std::ios_base::beg);
    std::cout << "basic_istringstream1: " << basic_istringstream1.str() << std::endl;
    std::cout << "basic_istringstream1 rdstate: ";
    std::cout << basic_istringstream1.rdstate() << std::endl;

    basic_istringstream2.seekg(std::ios_base::beg);
    std::cout << "basic_istringstream2: " << basic_istringstream2.str() << std::endl;
    std::cout << "basic_istringstream2 rdstate: ";
    std::cout << basic_istringstream2.rdstate() << std::endl;

    return 0;
}

输出

相关推荐
怀揣小梦想1 小时前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
努力努力再努力wz1 小时前
【C++进阶系列】:万字详解unordered_set和unordered_map,带你手搓一个哈希表!(附模拟实现unordered_set和unordered_map的源码)
java·linux·开发语言·数据结构·数据库·c++·散列表
加油=^_^=1 小时前
【C++】哈希表
数据结构·c++·散列表
对纯音乐情有独钟的阿甘1 小时前
【C++庖丁解牛】哈希表/散列表的设计原理 | 哈希函数
c++·哈希算法·散列表
励志不掉头发的内向程序员1 小时前
【STL库】哈希表的原理 | 哈希表模拟实现
开发语言·c++·学习·散列表
玩镜的码农小师兄1 小时前
[从零开始面试算法] (04/100) LeetCode 136. 只出现一次的数字:哈希表与位运算的巅峰对决
c++·算法·leetcode·面试·位运算·hot100
tan77º1 小时前
【项目】基于多设计模式下的同步&异步日志系统 - 项目介绍与前置知识
linux·c++·设计模式
给大佬递杯卡布奇诺2 小时前
FFmpeg 基本API avcodec_open2函数内部调用流程分析
c++·ffmpeg·音视频
进击的圆儿2 小时前
高并发内存池项目开发记录 - 02
开发语言·c++·实战·项目·内存池
YXXY3132 小时前
二叉树进阶
c++