stringstream(2021-1-25)

本文介绍了C++中的stringstream库,包括头文件、构造原型、用途和注意事项。sstream主要用于数据类型转换,提供istringstream、ostringstream和stringstream三个类分别进行输入、输出和双向操作。示例展示了如何使用stringstream进行字符串拼接、数据转换,并强调了在多次转换时使用clear()方法的重要性。还讨论了sstream处理空格分词的行为,并提供了两个例题,分别是二叉树的序列化和反序列化问题,展示了stringstream在实际问题中的应用。
摘要由CSDN通过智能技术生成

1.头文件:#include < sstream >

< sstream> 主要用来进行数据类型转换,由于 使用 string 对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。简单说,相比c库的数据类型转换而言, < sstream> 更加安全、自动和直接。

< sstream > 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。

C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。
istringstream类是从istream和stringstreambase派生而来,ostringstream是从ostream和 stringstreambase派生而来, stringstream则是从iostream类和stringstreambase派生而来。
在这里插入图片描述
更深层了解点这里(引用别人的)C++ stringstream介绍,使用方法与例子

2.构造原型

stringstream的构造函数原形如下:

stringstream::stringstream(string str);

3.stringstream的用处

1.数据类型转换

#include <string>
#include <sstream>
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main()
{
   
    stringstream sstream;
    string strResult;
    int nValue = 1000;
 
    // 将int类型的值放入输入流中
    sstream << nValue;
    // 从sstream中抽取前面插入的int类型的值,赋给string类型
    sstream >> strResult;
 
    cout << "[cout]strResult is: " << strResult << endl;
    printf("[printf]strResult is: %s\n", strResult.c_str());
 
    return 0;
}

除了基本类型的转换,也支持char *的转换。
代码:

#include <sstream>
#include <iostream> 

int main()
{
   
    std::stringstream stream;
    char result[8] ;
    stream << 8888; //向stream中插入8888
    stream >> result; //抽取stream中的值到result
    std::cout << result << std::endl; // 屏幕显示 "8888"
}

2.多个字符串拼接
本示例介绍在 stringstream 中存放多个字符串,实现多个字符串拼接的目的(其实完全可以使用 string 类实现),同时,介绍 stringstream 的清空方法。

#include <string>
#include <sstream>
#include <iostream>
 
using namespace std;
 
int main()
{
   
    stringstream sstream;
 
    // 将多个字符串放入 sstream 中
    sstream << "first" <&l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值