C++ostringstream用法
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用法的更多相关文章
- sstream
sstream用法 #include<iostream> #include<sstream> #include<string> using namespace st ...
- C++资料收集&整理
类别 地址 ZLib c++ zlib(qt)压缩与解压缩 STL STL学习之map容器(2)_insert Basic std::nothrow new (nothrow) T() 的原理 C++ ...
- 【C++ Primer | 08】IO库
IO类 C++的输入输出分为三种: (1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O istringstream类 描述:从流中提取数据,支持 >> 操作 这里字 ...
- ostringstream的用法
使用stringstream对象简化类型转换C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性.类型安全和可扩展性.在本文中, ...
- 标准C++中的string类的用法总结
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...
- VC++ 标准C++中的string类的用法总结
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...
- [C++][语言语法]标准C++中的string类的用法总结
转自:http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html 要想使用标准C++中string类,必须要包含 #include ...
- 初识 istringstream、ostringstream、stringstream 运用
今天编程练习时遇到了istringstream的用法,感觉很实用.后面附题目! C++的输入输出分为三种: (1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O 1.头文件 # ...
- c++ std::string 用法
std::string用法总结 在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询.在网上摘抄一下总结一下,为以后的查询方便: string类的构造函数: string(co ...
随机推荐
- Oracle插入中文乱码问题
PLSQL执行一条插入代码,两个字符既显示超长,一个字符插入后乱码 insert into person (pid, pname) values (1,'明'); Google查询说原因是Oracle ...
- 并发容器之ConcurrentHashMap(转载)
Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 1.7与1.8有很大的区别:h ...
- openstack新建实例各种报错解决
最近自己装了下Openstack,零基础安装,参照了网上不少教程. 吃了百家饭的后果,就是出现了一堆不明问题...openstack安装比较复杂,很多配置文件,一个地方配置不正确,可能会导致后面的功能 ...
- Linux基础——用户和用户组
Linux基础--用户和用户组 一.用户和用户组 用户在/etc/passwd中 用户组在/etc/group/中注意:在创建用户时,系统默认生成一个用户组(组名和用户名一致) 1.用户 1.1查看用 ...
- springboot系列总结(一)---初识springboot
Spring Boot是一个简化Spring开发的框架.用来监护spring应用开发,约定大于配置,去繁就简,just run 就能创建一个独立的,产品级的应用. 一说springboot ,Java ...
- MySQL-存储引擎-MERGE
MERGE存储引擎是一组Myisam表的组合,这些Myisam表必须结构完全相同,MERGE表本身并没有数据,对MERGE类型的表可以进行查询.更新.删除操作,这些操作实际上是对内部的Myisam表进 ...
- Python习题集(五)
每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! https://www.cnblogs.com/poloyy/category/1676599.html 题目 打印99乘法表 解 ...
- Asp.net MVC Vue Axios无刷新请求数据和响应数据
Model层Region.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; ...
- lua中的sleep实现
这篇文章主要介绍了Lua中实现sleep函数功能的4种方法,本文讲解了在一个死循环中设置一个跳出条件方法.调用系统的sleep函数法.Windows下ping命令法.socket库中select函数法 ...
- linux关于profile 、bashrc 、.bash_profile、.bashrc的区别
linux关于profile .bashrc ..bash_profile..bashrc的区别 - /etc/profile /etc/bashrc ~/.bash_profile ~/.bashr ...