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

stringstream提取字符串的问题

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
#include "stdafx.h" eg[EFI.h  
>M<3!?fW)  
#include <iostream> v+ $3  
#include <fstream> bWFa{W5!  
#include <sstream> K@.5   
#include <iterator> 8}QM~&&.  
using namespace std; _>gz&  
}x'*3zI  
int main(int argc, char* argv[]) {*xE+ |  
{ JE.$]){  
ifstream ifs("test.txt"); N_Us6 X  
if(!ifs) j=sfE qN).  
return false; .S` q2C\  
yF)o_OA[uR  
ostringstream oss; w{ja*F6  
istream_iterator<char> inpos(ifs); [LVXXjkFI  
istream_iterator<char> endpos; '6N)sqTR  
ostream_iterator<char> out(oss); !6/UwPs  
std::copy(inpos, endpos, out); pqG> |#RG  
string& szData = oss.str(); tP'v;$)9F  
v93b8/1  
const char * cc = szData.c_str(); a %#UF@ I  
// cout << (long)szData << endl; vC]X>P5Px  
// cout << (long)oss.str().c_str() << endl; 5U 84 *RY  
cout<< cc; W;u.@I&  
. ,|C>^  
return 0; N&8$tJ(hhx  
} Ez1eGPVr  
2Zu9? L ,I  
  注意以上代码中红色部分没有写成: %.bDK}  
  const char * cc = oss.str().c_str(); // error 6[m~xegG  
  要注意,oss.str()是值返回,所以这里会生成一个临时变量,此时cc中的值是该临时变量的内存地址。所以当此句执行完成后,临时变量被销毁,cc便失效。 n_kwtWX(  
  所以要先对该临时变量声明一个引用,此时该临时变量的生命周期便和szData一样,所以这样取到的cc所指向的内存才是有效的。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
描述
快速回复

您目前还是游客,请 登录注册
欢迎提供真实交流,考虑发帖者的感受
认证码:
验证问题:
3+5=?,请输入中文答案:八 正确答案:八