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

stringstream提取字符串的问题

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
#include "stdafx.h" u=a5Z4N'  
8Ar5^.k  
#include <iostream> Jjt'R`t%t  
#include <fstream> 5xJyW`SWz  
#include <sstream> #qL?;Zh0S  
#include <iterator> H|a9};pO\  
using namespace std; h-0sDt pR  
'FB?#C%U  
int main(int argc, char* argv[]) 6=V&3|"  
{ FD?!bI4  
ifstream ifs("test.txt"); jJ^p ?  
if(!ifs) 3GEI)!  
return false; {d`e9^Z:  
t*<@>]k  
ostringstream oss; DDdMWH^o7  
istream_iterator<char> inpos(ifs); J%|!KQl  
istream_iterator<char> endpos; 25xpq^Zw  
ostream_iterator<char> out(oss); *E"QFirk0  
std::copy(inpos, endpos, out); ;; z4EGr  
string& szData = oss.str(); r>fx5 5dw  
>)g`;iO  
const char * cc = szData.c_str(); b$/TfpNdo  
// cout << (long)szData << endl; bZ!*s  
// cout << (long)oss.str().c_str() << endl; :f^ =~#!  
cout<< cc; 9f ,$JjX[  
2=H3yEJq  
return 0; 4k9O6  
} f.?p"~!  
N?!]^jI,  
  注意以上代码中红色部分没有写成: j^DoILw  
  const char * cc = oss.str().c_str(); // error F+.:Ry FS  
  要注意,oss.str()是值返回,所以这里会生成一个临时变量,此时cc中的值是该临时变量的内存地址。所以当此句执行完成后,临时变量被销毁,cc便失效。 *ea%KE":  
  所以要先对该临时变量声明一个引用,此时该临时变量的生命周期便和szData一样,所以这样取到的cc所指向的内存才是有效的。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
描述
快速回复

您目前还是游客,请 登录注册
如果您在写长篇帖子又不马上发表,建议存为草稿
认证码:
验证问题:
3+5=?,请输入中文答案:八 正确答案:八