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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 按位取反的概念和计算方法「建议收藏」

    按位取反的概念和计算方法「建议收藏」读本文前请首先搞懂 “反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。取反:0变1,1变0反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)按位取反(~):这将是下面要讨论的。“~”运算符在c、c++、java、c#中都有,之前一直没有遇到这个运算符。要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。…

    2022年8月14日
    24
  • 软件工程中的需求分析(软件工程需求分析任务)

    第一部分需求规格说明书1.引言1.1编写目的1.2项目背景1.3定义1.4参考资料1.1编写目的目前我校的校园二手交易市场多是利用超级课程表上的“跳蚤市场”以及本校的贴吧进行,两者都形成了一定的规模。但是贴吧上的交易不够规范,而超级课程表改版之后对“跳蚤市场”这一模块也不够重视,对其入口进行了更改,进入不方便了,导致流量减少,目前在上面发布交易信息的人寥寥无几。…

    2022年4月9日
    100
  • 用idea搭建springboot项目_springboot入门项目

    用idea搭建springboot项目_springboot入门项目Idea搭建springboot项目

    2022年9月12日
    3
  • C该结构变化 struct typedef

    C该结构变化 struct typedef

    2022年1月11日
    59
  • gradle下载太慢_苹果6网络慢怎么解决

    gradle下载太慢_苹果6网络慢怎么解决由于网络的原因,有些地方连接下载Gradle没问题,有些地方就不行,所以需要想办法解决先说下载,打开文件gradle-wrapper.properties文件,修改distributionUrl把services.gradle.org改成downloads.gradle-dn.com当然这方法可能有些地方不行,实在不行就上代理吧再说Gradle下载jar包慢,在build.gradle文件的repositories{}内添加上阿里的仓库当然,如果添加了阿里仓库还不行的话只能找其他方

    2025年7月31日
    1
  • “undefined reference to“ 问题汇总及解决方法 ——非常非常好的一篇文章

    “undefined reference to“ 问题汇总及解决方法 ——非常非常好的一篇文章转载地址:https://segmentfault.com/a/1190000006049907?utm_source=tuicool&utm_medium=referral在实际编译代码的过程中,我们经常会遇到”undefinedreferenceto”的问题,简单的可以轻易地解决,但有些却隐藏得很深,需要花费大量的时间去排查。工作中遇到了各色各样类似的问题,按照以下几

    2022年5月31日
    98

发表回复

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

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