社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 2452阅读
  • 0回复

stringstream提取字符串的问题

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
#include "stdafx.h" gCPH>8JwS0  
%Rf9 KQ  
#include <iostream> #oa>Z.?_V  
#include <fstream> ,G46i)E\  
#include <sstream> -Z:x!M[Xr  
#include <iterator> kZF<~U  
using namespace std; '"\n,3h  
hx;kNcPbI  
int main(int argc, char* argv[]) M_UmnqN1C  
{ t7u*j-YE  
ifstream ifs("test.txt"); k'|yUJ,  
if(!ifs) v!ai_d^  
return false; s+fxv(,"c  
!',%kvJI  
ostringstream oss; W).Kq-  
istream_iterator<char> inpos(ifs); Kf[.@_TD<1  
istream_iterator<char> endpos; CC"a2Hu/  
ostream_iterator<char> out(oss); x+za6e_k"  
std::copy(inpos, endpos, out); WvJ:yUb2  
string& szData = oss.str(); cMT:Ij];  
gy,)% {,G  
const char * cc = szData.c_str(); ;a@riPqx!  
// cout << (long)szData << endl; D=3Z] 'A  
// cout << (long)oss.str().c_str() << endl; fgj$ u  
cout<< cc; # }}6JM  
p6BDhT(RS  
return 0; 'a JE+  
} R\7r!38  
<+q`Dk  
  注意以上代码中红色部分没有写成: ~/JS_>e#6P  
  const char * cc = oss.str().c_str(); // error hg0{x/Dgny  
  要注意,oss.str()是值返回,所以这里会生成一个临时变量,此时cc中的值是该临时变量的内存地址。所以当此句执行完成后,临时变量被销毁,cc便失效。 pL[3,.@WA  
  所以要先对该临时变量声明一个引用,此时该临时变量的生命周期便和szData一样,所以这样取到的cc所指向的内存才是有效的。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码:
验证问题:
10+5=?,请输入中文答案:十五