ostringstream用法

1.类型转换

要求包含头文件;

字符串和int之间的互相转换;

int num = 100;
string str = "";
std::ostringstream oss;
oss << num;
oss >> str; //str结果为"100";

可用于自定义类型转换,类之间转换;

class A
{
int a;
}
class B
{
int b;
}
A a;
B b;
std::ostringstream oss;
oss << a;
oss >> b; //str结果为"100";

可以写成泛型类同来互转;

template<class T>
void to_string(string& result,const T& t)
{
std::ostringstream oss;
oss<<t;
result = oss.str();
} //调用端
std::string str;
to_string(str,3.1415926);
to_string(str,false); //两种类型之间转换
template<class out_type,class in_value>
out_type convert(const in_value & t)
{
std::stringstream stream;
stream<<t;//向流中传值
out_type result;//这里存储转换结果
stream>>result;//向result中写入值
return result;
} double d;
string s="12.56";
d=convert<double>(s); //d等于12.56
s=convert<string>(9000.0);

2.代替sprintf拼接字符串

通常我们字符串拼接使用两种方式:

1.直接string相加,这种是很方便但是会造成内存碎片;

2.sprintf,这种第一个参数是char数组,不好判定长度的情况下,导致我们开很大的无用空间;

ostringstream恰好可解决这种问题:

std::ostringstream oss;
int a = 100;
std::string result;
oss << "aaa" << a;
result = oss.str();
std::cout << result; std::cout << std::endl; std::string str = "score:";
int score = 100;
char buff[100];
sprintf_s(buff, "score:%d", 100); std::cout << buff;

输出结果:

3.使用ostringstream好处

1.不需要开多余的内存,不用担心缓冲区溢出;

2.一个作用域内,一个流可以重复使用,不需要重新创建;但是用之前需要clear();

C++ostringstream用法的更多相关文章

  1. sstream

    sstream用法 #include<iostream> #include<sstream> #include<string> using namespace st ...

  2. C++资料收集&整理

    类别 地址 ZLib c++ zlib(qt)压缩与解压缩 STL STL学习之map容器(2)_insert Basic std::nothrow new (nothrow) T() 的原理 C++ ...

  3. 【C++ Primer | 08】IO库

    IO类 C++的输入输出分为三种: (1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O istringstream类 描述:从流中提取数据,支持 >> 操作 这里字 ...

  4. ostringstream的用法

    使用stringstream对象简化类型转换C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性.类型安全和可扩展性.在本文中, ...

  5. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  6. VC++ 标准C++中的string类的用法总结

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  7. [C++][语言语法]标准C++中的string类的用法总结

    转自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include ...

  8. 初识 istringstream、ostringstream、stringstream 运用

    今天编程练习时遇到了istringstream的用法,感觉很实用.后面附题目! C++的输入输出分为三种: (1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O 1.头文件  # ...

  9. c++ std::string 用法

    std::string用法总结 在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询.在网上摘抄一下总结一下,为以后的查询方便: string类的构造函数: string(co ...

随机推荐

  1. 通过refresh响应头,定时刷新或隔n秒跳转页面

    package day08; import java.io.IOException; import javax.servlet.ServletException; import javax.servl ...

  2. Spring之属性注入

    时间:2017-1-31 23:38 --Bean的属性注入方式有三种注入方式:    1)接口注入:        定义一个接口,定义setName(String name)方法,定义一个类,实现该 ...

  3. docker安装与配置nginx详细过程

    注:大鸟飞过,此方式只用于快速搭建使用 第一步 pull nginx 命令:docker pull nginx 第二步 启动nginx 命令:docker run --name nginx -p 80 ...

  4. opencv入门系列教学(二)图像入门:读取、展示并保存视频

    一.从相机读取视频 通常情况下,我们必须用摄像机捕捉实时画面.让我们从摄像头捕捉一段视频(我使用的是我笔记本电脑内置的网络摄像头) ,将其转换成灰度视频并显示出来.        要捕获视频,我们需要 ...

  5. vue 基础入门(一)

    app-1 :声明式渲染 app-2 :绑定元素特性 v-bind 特性被称为指令.指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性. app-3 app-4 :条件与循环 app-5 ,ap ...

  6. linux下查看磁盘使用内存及清除日志内存

    1.查看磁盘内存 df -h 2.清理日志内存 echo "">catalina.out

  7. Learning ROS: rostopic pub yaml demo

    官方Tutorials中例程的等效命令: rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '{linear:[2.0, 0.0, 0.0 ...

  8. sql函数大全

    sql函数大全 一.内部函数 1.内部合计函数 1)COUNT(*) 返回行数 2)COUNT(DISTINCT COLNAME) 返回指定列中唯一值的个数 3)SUM(COLNAME/EXPRESS ...

  9. idea字节码插件JClassLib——阅读JVM字节码

    idea字节码插件JClassLib--阅读JVM字节码 生成字节码文件并查看 查看字节码文件的方式:javac 文件名.java 即可生成.class文件,但是这种方式不方便 java:是运行字节码 ...

  10. GDB调试:Linux开发人员必备技能

    开篇词:Linux C/C++ 开发人员要熟练掌握 GDB 调试 大家好,我是范蠡,目前在某知名互联网旅游公司基础框架业务部技术专家组任开发经理一职. 本系列课程的主题是 Linux 后台开发的 C/ ...