【C++标准头文件】<sstream>

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

字符串拼接

std::stringstream ss;
//如果只有输入/输出,则使用单向stringstream
//std::ostringstream ss;

ss << "Happy " << "NewYear";
ss << " 2023!";

//result = "Happy NewYear 2023!"
std::string result = ss.str();

类型转换

  • 任意数值类型转换为 string
template<class Number>
std::string to_string(Number num) {
    std::ostringstream ss;
    ss << num;
    return ss.str();
}

void main(){
    //value1 = "1"
    std::string value1 = to_string(1);
    //value2 = "1.3"
	std::string value2 = to_string(1.3f);
}
  • string 类型转换为任意类型
template<class Number>
Number from_string(std::string str) {
    Number result;
    std::istringstream ss(str);
    ss >> result;
    return result;
}

void main(){
    //value1 = 1
	int value1 = from_string<int>("1");
    //value2 = 1.300000
	float value2 = from_string<float>("1.3");
    //value3 = 0.000000
	float value3 = from_string<float>("Happy");
}

strstream头文件

  • 头文件用于C风格的字符串,即 char* 这种风格,已被弃用,不建议使用
  • 头文件用于C++风格的字符串,即 std::string 这种风格

注意

  • 多次转换中重复使用同一个 stringstream(而不是每次都创建一个新的对象),在每次转换前使用clear()方法
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本人收集: C/C++头文件一览 C、传统 C++ #include <assert.h>    //设定插入点 #include <ctype.h>     //字符处理 #include <errno.h>     //定义错误码 #include <float.h>     //浮点数处理 #include <fstream.h>    //文件输入/输出 #include <iomanip.h>    //参数化输入/输出 #include <iostream.h>   //数据流输入/输出 #include <limits.h>    //定义各种数据类型最值常量 #include <locale.h>    //定义本地化函数 #include <math.h>     //定义数学函数 #include <stdio.h>     //定义输入/输出函数 #include <stdlib.h>    //定义杂项函数及内存分配函数 #include <string.h>    //字符串处理 #include <strstrea.h>   //基于数组的输入/输出 #include <time.h>     //定义关于时间的函数 #include <wchar.h>     //宽字符处理及输入/输出 #include <wctype.h>    //宽字符分类 ////////////////////////////////////////////////////////////////////////// 标准 C++ (同上的不再注释) #include <algorithm>    //STL 通用算法 #include <bitset>     //STL 位集容器 #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex>     //复数类 #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque>      //STL 双端队列容器 #include <exception>    //异常处理类 #include <fstream> #include <functional>   //STL 定义运算函数(代替运算符) #include <limits> #include <list>      //STL 线性列表容器 #include <map>       //STL 映射容器 #include <iomanip> #include <ios>       //基本输入/输出支持 #include <iosfwd>     //输入/输出系统使用的前置声明 #include <iostream> #include <istream>     //基本输入流 #include <ostream>     //基本输出流 #include <queue>      //STL 队列容器 #include <set>       //STL 集合容器 #include <sstream>     //基于字符串的流 #include <stack>      //STL 堆栈容器     #include <stdexcept>    //标准异常类 #include <streambuf>    //底层输入/输出支持 #include <string>     //字符串类 #include <utility>     //STL 通用模板类 #include <vector>     //STL 动态数组容器 #include <cwchar> #include <cwctype> using namespace std; ////////////////////////////////////////////////////////////////////////// C99 增加 #include <complex.h>   //复数处理 #include <fenv.h>    //浮点环境 #include <inttypes.h>  //整数格式转换 #include <stdbool.h>   //布尔环境 #include <stdint.h>   //整型环境 #include <tgmath.h>   //通用类型数学宏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值