C++中使用stringstream简化类型转换
来源:互联网 发布:java把网址生成二维码 编辑:程序博客网 时间:2024/06/06 03:29
C++标准库中的<sstream>提供了一个stringstream,以前基本没用过,突然发现很好用(^-^)V
参见 http://www.cplusplus.com/reference/sstream/stringstream/
如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法;
在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。
如何用使用stringstream进行类型转换:
1. 下面例子为整型和sting类型的相互转换示例
整型转换为字符串类型
string NumberToString(int num)
{
stringstream ss;
ss<<num; //像流中传值
string result;
ss>>result; //将流中的值写入到result
return result;
}
字符创类型转换为整型
int StringToNumber(string strNum)
{
stringstream ss;
ss<<strNum;
int result;
ss>>result;
return result;
}
编译期就确定了num,result,strNum的类型,调用stringstream的时候拥有足够的信息判断来进行自动转换,并将转换结果缓存到stringstream对象的内部缓冲中
stringstream对象会根据需要自动分配内存,不用担心溢出问题.
例如:
float n = 22.22;
string strNum = "22.22";
cout<<StringToNumber(strNum)<<endl;
cout<<NumberToString(n)<<endl;
输出:22 22
2. 任意类型的转换
template <class output_type,class input_type>
output_type Convert(const input_type &input)
{
stringstream ss;
ss<<input;
output_type result;
ss>>result;
return result;
}
例如:
float n = 22.22;
string strNum = "22.22";
float f = Convert<float>(strNum);
cout<<f<<endl;
string ss = Convert<string>(n);
cout<<ss<<endl;
输出: 22.22 22.22
3. 自定义类型的转换
<sstream>库还提供了另外一个特性—可扩展性,你可以通过重载来支持自定义类型间的转换,下次在探究
- 【C++】使用stringstream对象简化类型转换
- C++中使用stringstream简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- 使用stringstream对象简化类型转换
- c++ 使用stringstream对象简化类型转换
- Android用surface直接显示yuv数据(二)
- Android 调用系统播放器,调用系统Camera
- centos 安装工具出现提示错误:Couldn't resolve host 'mirrorlist.centos.org'
- FullCalendar结合java springMVC
- Maven 如何修改本地仓库与中央仓库
- C++中使用stringstream简化类型转换
- [CE5入门系列1]如何正确安装和初步使用
- QFont的使用
- 第十二周 进制转换
- 润乾报表选中一行数据生成相应的统计图
- 分享Kali Linux 2016.2第47周虚拟机
- JavaScript 实现跑马灯抽奖效果
- Auto property synthesis will not synthesize property ‘delegate’;it will be implemented by its superc
- 轻松学习RSA加密算法原理