stringstream中的.clear()和.str()

在C++中可以使用stringstream来很方便的进行类型转换,字符串串接,不过注意重复使用同一个stringstream对象时要先继续清空,而清空很容易想到是clear方法,而在stringstream中这个方法实际上是清空stringstream的状态(比如出错等),真正清空内容需要使用.str(“”)方法。

用.str(“”)方法可以清楚缓存,但是,需要重复使用同一个stringstream对象时,得先用.str(“”)方法清楚缓存,再用.clear()方法重设状态,,否则对stringstream对象的操作是无效的。

#include <iostream>#include <sstream>#include <string>using namespace std;int main(){stringstream stream;stream<<"123";int n;stream>>n;cout<<n<<endl;//stream.str("");stream.clear();stream<<"de";string s;stream>>s;cout<<s;return 0;}输出结果:

而不用.str(“”)方法,只用.clear()方法,可以得到同上的结果,但是这是很危险的,极有可能耗尽全部内存。

#include <iostream>#include <sstream>#include <string>using namespace std;int main(){stringstream stream;stream<<"123";int n;stream>>n;cout<<n<<endl;stream.str("");//stream.clear();stream<<"de";string s;stream>>s;cout<<s;return 0;}

#include <iostream>#include <sstream>#include <string>using namespace std;int main(){stringstream stream;stream<<"123";int n;stream>>n;cout<<n<<endl;//stream.str("");//stream.clear();stream<<"de";string s;stream>>s;cout<<s;return 0;}

偶尔为街头独特的风景驻足,

stringstream中的.clear()和.str()

相关文章:

你感兴趣的文章:

标签云: