<sstream>和<strstream>的区别
2012-06-20 22:28
337 查看
<sstream> 中istringstream,ostringstream,stringstream
<strstream> 中istrstream,ostrstream,strstream
1.sstream所定义的类型用于读写存储在内存中的string对象
istringstream从string对象中读取,由istream派生而来
ostringstream写到string对象中去,由ostream派生而来
stringstream对string对象进行读写,由iostream派生而来
2.istrstream类用于执行C风格的串流的输入操作,也就是以字符串数组作为输入设备。
ostrstream类用于执行C风格的串流的输出操作,也就是一字符串数组作为输出设备。
strstream类同时可以支持C风格的串流的输入输出操作。
并且strstream里的东西已经被c++标准明确标明为“不要再使用”
3.istrstream不会自己释放内存,也就是如果你不调用freeze(false),在析构函数中内存是不会释放的。
并且istrstream处理中文也会有问题
4.
stringstream stream;
string str;
while(1)
{
//clear(),这个名字让很多人想当然地认为它会清除流的内容。
//实际上,它并不清空任何内容,它只是重置了流的状态标志而已!但是字符串依然在stream流里。所以加载新的字符串必须是,clear和str一起使用
stream.clear();
// 去掉下面这行注释,清空stringstream的缓冲,每次循环内存消耗将不再增加!
stream.str("");
stream<<"sdfsdfdsfsadfsdafsdfsdgsdgsdgsadgdsgsdagasdgsdagsadgsdgsgdsagsadgs";
stream>>str;
//看看每次循环,你的内存消耗增加了多少!
cout<<"Size of stream = "<<stream.str().length()<<endl;
}
<strstream> 中istrstream,ostrstream,strstream
1.sstream所定义的类型用于读写存储在内存中的string对象
istringstream从string对象中读取,由istream派生而来
ostringstream写到string对象中去,由ostream派生而来
stringstream对string对象进行读写,由iostream派生而来
2.istrstream类用于执行C风格的串流的输入操作,也就是以字符串数组作为输入设备。
ostrstream类用于执行C风格的串流的输出操作,也就是一字符串数组作为输出设备。
strstream类同时可以支持C风格的串流的输入输出操作。
并且strstream里的东西已经被c++标准明确标明为“不要再使用”
3.istrstream不会自己释放内存,也就是如果你不调用freeze(false),在析构函数中内存是不会释放的。
并且istrstream处理中文也会有问题
4.
stringstream stream;
string str;
while(1)
{
//clear(),这个名字让很多人想当然地认为它会清除流的内容。
//实际上,它并不清空任何内容,它只是重置了流的状态标志而已!但是字符串依然在stream流里。所以加载新的字符串必须是,clear和str一起使用
stream.clear();
// 去掉下面这行注释,清空stringstream的缓冲,每次循环内存消耗将不再增加!
stream.str("");
stream<<"sdfsdfdsfsadfsdafsdfsdgsdgsdgsadgdsgsdagasdgsdagsadgsdgsgdsagsadgs";
stream>>str;
//看看每次循环,你的内存消耗增加了多少!
cout<<"Size of stream = "<<stream.str().length()<<endl;
}
相关文章推荐
- <context-param>与<init-param>的区别与作用
- <%#eval%>和<%#bind%>的区别
- <jsp:directive.page import=""/> 和<%@ page import="" %>的区别
- 疑问 <meta http-equiv="charset" content="utf-8">和 <meta charset="UTF-8">的区别?
- <%@ include file=""%>与<jsp:include page=""/>区别
- <python>python 2.x 与 3.x 的区别
- <? extends T> 与 <? super T>的区别
- <s:form action="XX.action"> 与 <s:form action="XX"> 的区别
- <html:checkbox>和<html:multibox>的区别
- <%@ include file=""%>与<jsp:include page=""/>区别
- "<br />"和 "\r\n" 这两者有什么区别??
- <jsp:include page="xxx"> 和<%@include file="xxx">区别
- <script runat=server>,<%%>区别
- <context-param>与<init-param>的区别与作用
- <%@ include file=""%> 和<jsp:include page=""/>两者的区别
- <input type="image"> 和 <img> 用法区别
- <context-param>与<init-param>的区别与作用
- <%@ include > 和 <jsp:include>的区别
- <b>与<strong> <em>与<i>标签的区别
- <string> 与<string.h>、<cstring>的区别