C++ostringstream用法

C++ostringstream用法ostringstream用法1.类型转换要求包含头文件;字符串和int之间的互相转换;intnum=100;stringstr=””;std::ostringstreamoss;oss<<num;oss>>str; //str结果为”100″;可用于自定义类型转换,类之间转换;classA{inta;}classB{intb;}Aa;Bb;std::ostringstreamoss;os

大家好,又见面了,我是你们的朋友全栈君。

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;

输出结果:

C++ostringstream用法

3.使用ostringstream好处

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158705.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • crontab怎么使用_crontab配置

    crontab怎么使用_crontab配置    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行安装:apt-getinstallcron  (服务器环境下默认都会安装)使用:crontab-e  进入编辑页面(第一次进入会让你选择编辑器)       crontab-l  查看当前的定时任务以上是crontab的使用规则,以及定时方法的…

    2022年8月24日
    7
  • php 位运算 3<<2;

    php 位运算 3<<2;

    2021年10月15日
    40
  • 百度指数可以下载吗_百度指数能查一年的数据吗

    百度指数可以下载吗_百度指数能查一年的数据吗大家好我是小小明,今天给大家演示如何使用python直接采集百度指数的数据。百度指数(BaiduIndex)是以百度海量网民行为数据为基础的数据分析平台,它能够能够告诉用户:某个关键词在百度的搜索规模有多大,一段时间内的涨跌态势以及相关的新闻舆论变化,关注这些词的网民是什么样的,分布在哪里,同时还搜了哪些相关的词。百分十先生分享过如何使用uiautomation采集百度指数:百度指数如何批量获取?不过个人感觉这方法好像有点杀鸡用牛刀,对于网页使用selenium完全足以,当然对于专门针对sele

    2022年10月8日
    2
  • HorizontalScrollView扩展总结

    HorizontalScrollView扩展总结ScrollView相信大家都已经比较熟悉了,它是支持垂直滚动的,在开发中经常使用到,与垂直滚动相对的就是水平滚动HorizontalScrollView,有时我们在进行页面切换的时候也会用到HorizontalScrollView。通过查看源码比较发现ScrollView和HorizontalScrollView有好多相同的方法。在说扩展之前,我先说一下HorizontalScrollVie

    2022年7月14日
    26
  • Switching regulator forms constant-current source

    Switching regulator forms constant-current source

    2021年9月2日
    67
  • 解决报错(Navigation cancelled from “/roleList“ to “/userlist“ with a new navigation.)[通俗易懂]

    解决报错(Navigation cancelled from “/roleList“ to “/userlist“ with a new navigation.)[通俗易懂]写项目的时候,报了一个错,现在总结出来,希望可以帮助到你们。这个报错的原因:使用新导航取消了从“/roleList”到“/userlist”的导航。解决的方法:关于VueRouter报错路由

    2022年7月1日
    155

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号