stringstream类简介

                                     stringstream类简介

                                                                                    Name:qianghaoaho
#include <iostream>
#include <cstring>
#include <sstream>
using namespace std;


///                  stringstream类简介:
///      <sstream>类库定义了三种类:istringstream,
///   ostringstream,stringstream.分别用来进行流的输入,流的输出,输入输出
///   操作.在此演示stringstream的使用.**stringstream最大的特点是可以很方便
///   的实现各种数据类型的转换,不需要像C语言中转换那么麻烦,而且转换非常安全.
///   stringstream经常用于方便安全的类型转换.以下是使用示例:


/1.int和string类型互相转换
#if 1
int main()
{

	//********int转换成string**********
	int n = 300;
	string result;
	stringstream oss;  //创建一个流
	oss<<n;  //将n的值传入oss流
	oss>>result;  //将oss流中的数据写入result变量
	//也可以这么写:result = oss.str();
	cout << "int(300)--to-->string(300):" << result << endl;  //打印转换结果

	//********string转换成int**********
	int m;
	string int_number = "12345";
	stringstream oss1;  //创建一个流
	oss1<<int_number;  //将int_number的值传入oss流
	oss1>>m;  //将oss流中的数据写入m变量
	cout << "string(12345)--to-->int(12345):" << m << endl;  //打印转换结果
	return 0;
}
#endif

/2.float和string类型互相转换
#if 0
int main()
{

	//********float转换成string**********
	float n = 300.8;
	string result;
	stringstream oss;  //创建一个流
	oss<<n;  //将n的值传入oss流
	oss>>result;  //将oss流中的数据写入result变量
	//也可以这么写:result = oss.str();表示将流中的数据转换成string类型
	cout << "float(300.8)--to-->string(300.8):" << result << endl;  //打印转换结果

	//********string转换成float**********
	float m;
	string float_number = "12345.7";
	stringstream oss1;  //创建一个流
	oss1<<float_number;  //将int_number的值传入oss流
	oss1>>m;  //将oss流中的数据写入m变量
	cout << "string(12345.7)--to-->float(12345.7):" << m << endl;  //打印转换结果
	return 0;
}
#endif

/3.int和float类型互相转换
#if 0
int main()
{

	//********int转换成float**********
	int n = 300;
	float result;
	stringstream oss;  //创建一个流
	oss<<n;  //将n的值传入oss流
	oss>>result;  //将oss流中的数据写入result变量
	//也可以这么写:result = oss.str();表示将流中的数据转换成string类型
	cout << "int(300)--to-->float(300):" << result << endl;  //打印转换结果

	//********float转换成int**********
	int m;
	float float_num = 12345.789;
	stringstream oss1;  //创建一个流
	oss1<<float_num;  //将int_number的值传入oss流
	oss1>>m;  //将oss流中的数据写入m变量
	cout << "float(12345.789)--to-->int(12345):" << m << endl;  //打印转换结果
	return 0;
}
#endif

///4.用模板函数ToString(...)实现任意类型到string的转换///
#if 0
//
///       至于其他类型的互相转换就不一一列举了,其他的都是同样
///    的道理.接下来写个模板实现各种类型的数值到string类型的转
///    换.
//

//用模板将各种数值转化成string类型
	template<class T>
void ToString(string &result, const T &t)
{
	stringstream oss;  //创建一个流
	oss<<t;  //将t的值传入oss流
	result = oss.str();  //获取转化后的字符串并写入result
	//也可以写成oss>>result;
}

int main()
{
	int     int_num    = 100;
	float   float_num  = 99.876;
	double  double_num = 87.89;
	string int_str;
	string float_str;
	string double_str;

	ToString(int_str, int_num);        //整数类型转换成string类型
	ToString(float_str, float_num);    //浮点数类型转换成string类型
	ToString(double_str, double_num);  //双精度类型转换成string类型

	//打印结果
	cout << int_str << endl;
	cout << float_str << endl;
	cout << double_str << endl;
	return 0;
}
#endif

//------>可以看出stringstream类可以很方便的实现类型之间的安全转换


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值