码迷,mamicode.com
首页 > 编程语言 > 详细

C++ stringstream详解-安全高效的类型转换

时间:2014-07-18 22:11:03      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   使用   os   

在头文件<sstream>中包含。

string 到int 的转换

string result=”10000”;
int n=0;
stream<<result;
stream>>n;//n等于10000

如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法;

在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。

函数模板的使用:

template<class T>

void to_string(string & result,const T& t)

{

 ostringstream oss;//创建一个流

oss<<t;//把值传递如流中

result=oss.str();//获取转换后的字符转并将其写入result
}

这样,你就可以轻松地将多种数值转换成字符串了:

to_string(s1,10.5);//double到string

to_string(s2,123);//int到string

to_string(s3,true);//bool到string

更进一步,我们把输入类型也抽象成模板。

<pre name="code" class="cpp">template<class out_type,class in_value>

out_type convert(const in_value & t)

{

stringstream stream;

stream<<t;//向流中传值

out_type result;//这里存储转换结果

stream>>result;//向result中写入值

return result;

}

这样使用convert():

double d;

string salary;

string s=”12.56”;

d=convert<double>(s);//d等于12.56

salary=convert<string>(9000.0);//salary等于”9000”



下面是增加的内容:

stringstream的用法

 

1.利用输入输出做数据转换

 

stringstream ss_stream;
ss_stream << i; // 将int输入流中
ss_stream >> str; // 将ss_stream中的数值输出到str中

//注意:如果做多次数据转换;必须调用clear()来设置转换模式
ss_stream << "456";
ss_stream >> i; // 首先将字符串转换为int
ss_stream.clear();
ss_stream << true;
ss_stream >> i; // 然后将bool型转换为int;假如之前没有做clear,那么i会出错

//运行clear的结果
i = 456
i = 1
//没有运行clear的结果
i = 456
i = 8800090900

 

2.支持char*的输入和输出

 

char sz_buf[20];
ss_stream << 8888;
ss_stream >> sz_buf; // 直接将数输出到sz_buf字符数组中

  

3.来存储可变数据的列表

 

stringstream ss_stream;
ss_stream << "字符串一" << endl;
ss_stream << "字符串二" << endl;
ss_stream << "字符串三" << endl;
ss_stream << "字符串四" << endl;
ss_stream << "字符串五" << endl;

char buffer[100];
while ( ss_stream.getline(buffer, sizeof(buffer))
{
printf("msg=%s\n", buffer);
}
ss_stream("");// 释放字符串流中的资源

// 或者用string来接收
stringstream ss_stream;
string stemp;
while ( getline(ss_stream, stemp) )
{
task_download(stemp.c_str(), relate.c_str());
}


C++ stringstream详解-安全高效的类型转换,布布扣,bubuko.com

C++ stringstream详解-安全高效的类型转换

标签:des   style   blog   color   使用   os   

原文地址:http://blog.csdn.net/yapian8/article/details/37881695

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!