在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; }
时间: 2024-10-14 09:12:02