stringstream则是
初始化方法:
-
stringstream stream; int a; stream << "12"; stream >> a; cout << a << endl;
-
stringstream stream("adfaf afagfagag"); string a; stream >> a; cout << a << endl;
-
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 }