stringstream中clear()和str(”“)的区别
来源:互联网 发布:mac os x输入法切换 编辑:程序博客网 时间:2024/06/05 03:33
区别:
clear():清除流的状态标志,但不会改变流中的内容。
str(”“):清空流中的数据,相当于无论之前流中的数据是什么,使用str(”“)之后,流数据为空,并且将状态符固定。
例1:两者均无的实例
#include <sstream>
#include <iostream>
#include<string>
using namespace std;
void main(void)
{
stringstream aa;
int a=123,b=456;
string m,n;
aa<<a;//插入int数据,插入后,流的eofbit位固定,所以流将不再接受数据
aa>>m;//装换为字符串m=”123“
aa<<b;//eofbit位固定,不会接收b
aa>>n;//n=”“
cout<<m<<endl<<n<<endl<<aa.str()<<endl;//流的内容仍然为”123“
}
运行结果:
123
123
例2:仅使用clear()
#include <sstream>
#include <iostream>
#include<string>
using namespace std;
void main(void)
{
stringstream aa;
int a=123,b=456;
string m,n;
aa<<a;
aa>>m;
aa.clear();//清除了流的eofbit位(failbit,badbit),使流能继续接受数据,但是流之前的内容并未清除
aa<<b;//b的数据传入流
aa>>n;
cout<<m<<endl<<n<<endl<<aa.str()<<endl;
}
运行结果
123
456
123456
例3:仅使用str(”“)
#include <sstream>
#include <iostream>
#include<string>
using namespace std;
void main(void)
{
stringstream aa;
int a=123,b=456;
string m,n;
aa<<a;
aa>>m;
aa.str("");//清空了流的内容,同时再次固定了eofbit位,流将不再接收数据
aa<<b;
aa>>n;
cout<<m<<endl<<n<<endl<<aa.str()<<endl;//运行结果将有两个空白行
}
运行结果:
123
例4:同时使用
#include <sstream>
#include <iostream>
#include<string>
using namespace std;
void main(void)
{
stringstream aa;
int a=123,b=456;
string m,n;
aa<<a;
aa>>m;
aa.clear();
aa.str("");
aa<<b;
aa>>n;
cout<<m<<endl<<n<<endl<<aa.str()<<endl;
}
运行结果:
123
456
456
从四个例可以看出
1.如果要多次利用stringstream进行类型转换,必须使用str(”“),否则占用内存将不断扩大;
2.使用str(”“)后,流的eofbit位固定了,再次进行类型转换时,需要清除状态位,所以要使用clear();
- stringstream中clear()和str(”“)的区别
- stringstream中的.clear()和.str()
- C++ stringstream clear()和.str("")
- stringstream clear与str("")的问题
- 容器中clear()和erase()的区别
- stringstream clear()的误区
- stringstream clear()的误区
- std::stringstream::str和ss
- stringstream 的.str()正确用法和清空操作
- stringstream 的.str()正确用法和清空操作
- stringstream 的.str()正确用法和清空操作
- stringstream 的.str()正确用法和清空操作
- stringstream真的很好用, 但要注意坑(clear函数之坑, 之前说过)
- String str=new String("x"); 和String str="x"的区别
- char str[] 和 char *str 的区别(p66程序员面试宝典)
- char *str和char str[]的区别
- char str[] 和 char *str 的区别
- char str[] 和 char *str 的区别
- Leetcode[222]-Count Complete Tree Nodes
- Spring+Mybatis+Velocity配置
- freopen()函数的使用及如何返回控制台。
- 最长回文
- oracle 中oci 关于null 的处理方法
- stringstream中clear()和str(”“)的区别
- MySQL greatest 和 least
- Android Studio个人常用快捷键
- ROS下用gmapping 构建实验室地图的实现
- 常用的OCI函数
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
- 中国互联网的11种盈利模式
- 利用jquery实现滚动图片
- To_review_100_0---堆的整理