c++ 任意数据类型转换 sstream

#ifndef _MyType_h_
#define _MyType_h_

#include <string>
#include <sstream>
#include <iostream>

using namespace std;


template<class in_value>
extern void all2str(string & result, const in_value& t);

template<class out_type,class in_value>
extern out_type all2all(const in_value & t);

//编译器报错,函数没有写在CPP中

template<class in_value>
void all2str(string & result, const in_value& t)
{
	ostringstream oss;	//创建一个流
	oss<<t;				//把值传递如流中
	result=oss.str();	//获取转换后的字符转并将其写入result
}

template<class out_type,class in_value>
out_type all2all(const in_value & t)
{
	stringstream stream;
	stream<<t;			//向流中传值
	out_type result;	//这里存储转换结果
	stream>>result;		//向result中写入值
	return result;
}


#endif


#include <iostream>
#include "MyType.h"

using namespace std;

int main()
{
	string s1,s2,s3;
	all2str(s1,10.5);		//double到string
	all2str(s2,123);		//int到string
	all2str(s3,true);		//bool到string
	cout << s1<<" , "<< s2<<" , "<< s3 << endl;

	double d;
	string s4="12.56";
	d=all2all<double>(s4);	//d等于12.56

	string s5;
	s5=all2all<string>(9000.0);	//s5等于”9000”

	cout << d <<" , "<< s5 << endl;

	while(1);
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值