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

stringstream提取字符串的问题

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
#include "stdafx.h" H?W8_XiN  
_!?iiO  
#include <iostream> _S;Fs|p_  
#include <fstream> <R @w0b>  
#include <sstream> <-K'9ut,  
#include <iterator> DW.vu%j^[  
using namespace std; {G(N vf,K]  
LFT)_DG7(  
int main(int argc, char* argv[]) ;PF!=8dW  
{ KI~M.2pk  
ifstream ifs("test.txt"); O'~;|-Z<  
if(!ifs) >r~!'Pd!  
return false; gQ~X;'  
:;u?TFCRx  
ostringstream oss; 89X`U)Ws  
istream_iterator<char> inpos(ifs); "L~qsFL  
istream_iterator<char> endpos; sQ>L3F;A`  
ostream_iterator<char> out(oss); ~ (/OB w  
std::copy(inpos, endpos, out); F)^:WWVc#  
string& szData = oss.str(); \oc*  
lgaE2`0 [3  
const char * cc = szData.c_str(); y{]iwO;  
// cout << (long)szData << endl; V [KFZSA  
// cout << (long)oss.str().c_str() << endl; j1U,X  
cout<< cc; O6Jn$'os1#  
si.w1  
return 0; Jx_BjkF  
} @ob4y  
pQf5s7  
  注意以上代码中红色部分没有写成: *='J>z.]  
  const char * cc = oss.str().c_str(); // error j65qIw_Z  
  要注意,oss.str()是值返回,所以这里会生成一个临时变量,此时cc中的值是该临时变量的内存地址。所以当此句执行完成后,临时变量被销毁,cc便失效。 j`pX2S  
  所以要先对该临时变量声明一个引用,此时该临时变量的生命周期便和szData一样,所以这样取到的cc所指向的内存才是有效的。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
描述
快速回复

您目前还是游客,请 登录注册
批量上传需要先选择文件,再选择上传
认证码:
验证问题:
3+5=?,请输入中文答案:八 正确答案:八