sstream

匿名 (未验证) 提交于 2019-12-02 23:43:01

stringstream则是

初始化方法:

  1. stringstream stream; int a; stream << "12"; stream >> a; cout << a << endl;

  2. stringstream stream("adfaf afagfagag"); string a; stream >> a; cout << a << endl;

  3. string a = "aljfljfalf"; stringstream stream(a); cout << stream.str() << endl;

 1 #include <sstream>  2 using namespace std;  3 int main()  4 {  5     stringstream stream;  6     int a,b;  7     stream << "080";//将“080”写入到stream流对象中  8     stream >> a;//将stream流写入到a中,并根据a的类型进行自动转换,"080" -> 80  9     cout << stream.str() << endl;//成员函数str()返回一个string对象,输出80 10     cout << stream.length() << endl;//2 11 }
 

str()和clear()

stream用完之后,其内存和标记仍然存在,需要用这两个函数来初始化。

clear()只是清空而是清空该流的错误标记,并没有清空stream流(没有清空内存);

str(“”)stream内容重新赋值为空。

clear和str(“”“”)结合起来一起用。

 1 #include <sstream>  2 #include <cstdlib>//用于system("PAUSE")  3 using namespace std;  4 int main()  5 {  6     stringstream stream;  7     int a,b;  8     stream << "80";  9     stream >> a; 10     cout << stream.str() << endl;//此时stream对象内容是"80",不是空的 11     cout << stream.str().length() << endl;//此时内存为2byte 12      13     //此时再将新的"90"写入进去的话,会出错的,因为stream重复使用时,没有清空会导致错误。 14     //如下: 15     stream << "90"; 16     stream >> b; 17     cout << stream.str() << endl;//还是80 18     cout << b << endl;//1752248,错了,没有清空标记,给了b一个错误的数值 19     cout << stream.str().length() << endl;//还是2bytes 20      21     //如果只用stream.clear(),只清空了错误标记,没有清空内存 22     stream.clear(); 23     stream << "90"; 24     stream >> b; 25     cout << b << endl;//90 26     cout << stream.str() <<endl;//变成90 27     cout << stream.str().length() << endl;//4,因为内存没有释放,2+2 = 4bytes 28      29     //stream.clear() 和 stream.str("")都使用,标记和内存都清空了 30     stream << "90"; 31     stream >> b; 32     cout << b << endl; 33     cout << stream.str() << endl;//90 34     cout << stream.str().length() << endl;//2bytes 35      36     system("PAUSE"); 37     return 0; 38 }

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!