这是从http://www.cnblogs.com/yaozhongxiao/archive/2009/05/23/1487903.html拿来的,希望作者不要介意!
1. sstream 在C++有两种字符串流,一种在sstream中定义, strstream里包含 sstream中包含 因此ostrstream::str()返回的是char*类型的字符串 在使用的时候要注意到二者的区别,一般情况下推荐使用std::string类型的字符串 ===================================================== 2. stringstream 使用stringstream对象简化类型转换 为什么要学习 如果你已习惯了<stdio.h>风格的转换,也许你首先会问:为什么要花额外的精力来学习基于<sstream>的类型 转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int类型转换到字符串类型。为了正确地完成这个任 务,你必须确保证目标缓冲区有足够大空间以容纳转换完的字符串。此外,还必须使用正确的格式化符。如果使用了不正确的格式化符,会导致非预知的后果。下面 是一个例子: int n=10000; chars[10]; sprintf(s,”%d”,n);// s中的内容为“10000” char s[10]; sprintf(s,”%f”,n);// 看!错误的格式化符 在这种情况下,程序员错误地使用了%f格式化符来替代了%d。因此,s在调用完sprintf()后包含了一个不确定的字符串。要是能自动推导出正确的类型,那不是更好吗? 进入stringstream 重复利用stringstream对象 如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法; 在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。 .clear()是清空标志位 ============================================================= 3. istringstream istringstream是由一个string对象构造而来,istringstream类从一个string对象读取字符。 4. ostringstream 是向一个string对象输出字符 ostringstream ostr; a. 获得字符串 .str(); b. 每次不同的使用时刻必须要清空 ss.str(""), iss.str(""), oss.str(""),暂时没有发现其它的清空方法 |