参见两个博客:基础,有关多次使用
- 需要的头文件:<sstream>
- 例子:
string result = "10000";
int n = 0;
stream << result;
stream >> n; //n等于10000
- 注意:
clear()函数:
clear(),这个名字让很多人想当然地认为它会清除流的内容。实际上,它并不清空任何内容,它只是重置了流的状态标志而已
str()函数:
有两个重载:如果有参数(字符串),那么将参数字符串复制到sstream(是完全覆盖,如果用str("")可以用来清除sstream内容释放内存);
如果没有参数,那么返回sstream内容 - 注意看清楚以下几种情况的区别:
stringstream stream;
int n;
1)-------输出1020
stream << 10;
stream.clear();//此处没用
stream << 20;
stream >> n;
cout << n << endl;
2)-------输出20
stream << 10;
stream >> n;
stream.clear();
stream << 20;
stream >> n;
cout << n << endl;
3)-------输出1020
stream << 10;
stream >> n;
stream.clear();
stream << 20;
stream >> n;
cout << stream.str() << endl;
3)-------输出10
stream << 10;
stream >> n;
stream << 20;
stream >> n;
cout << n << endl;
4)-------输出10
stream << 10;
stream >> n;
stream << 20;
stream >> n;
cout << stream.str() << endl;
4)-------输出乱码
int n, k;
stream << 10;
stream >> n;
stream >> k;
cout << k << endl;
可以总结出sstream的特点:
1)有对象时只能输出一次,多次输出会导致错误(必须输出到不同变量才会有乱码。。。不懂)
2)当输入一个对象后,必须先输出后clear(),才能继续正常使用
3)当输入一个对象后,如果不输出继续输入,那么输入将会累积
4)当输入一个对象并且输出后,如果不clear(),那么继续输入对象是无效的(没有进入到stream对象中)
stringsteram用法,布布扣,bubuko.com
stringsteram用法
原文:http://blog.csdn.net/wty__/article/details/21099347