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

stringstream提取字符串的问题

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
#include "stdafx.h" Qd$!?h  
y~pJ|E  
#include <iostream> e6WKZ~ v o  
#include <fstream> 6v}WdK  
#include <sstream> . ;q 4<_  
#include <iterator> :]oRx  
using namespace std; A1(=7ZKz  
2u|} gZts  
int main(int argc, char* argv[]) GwaU7[6  
{ G' 'l,\3  
ifstream ifs("test.txt"); h_:|H8t;w  
if(!ifs) 1V37% D  
return false; &r Lg/UEV-  
$zuemjW3p  
ostringstream oss; _P*<T6\J>  
istream_iterator<char> inpos(ifs); GP\Pk/E  
istream_iterator<char> endpos; uM<6][^`  
ostream_iterator<char> out(oss); #D&]5"0cX  
std::copy(inpos, endpos, out); D#n^U `\if  
string& szData = oss.str(); 1Q ^YaHzuW  
yPqZ ,  
const char * cc = szData.c_str(); aj<=]=hr  
// cout << (long)szData << endl; NuqWezJm&  
// cout << (long)oss.str().c_str() << endl; ` 'y[i  
cout<< cc; ;/8oP ;X2  
$}G03G@  
return 0; 1 k}U+  
} HrZ\=1RB  
@fWmz,Ngl  
  注意以上代码中红色部分没有写成: UR&Uwa&.  
  const char * cc = oss.str().c_str(); // error c~+;P(>  
  要注意,oss.str()是值返回,所以这里会生成一个临时变量,此时cc中的值是该临时变量的内存地址。所以当此句执行完成后,临时变量被销毁,cc便失效。 U,4:yc,)s  
  所以要先对该临时变量声明一个引用,此时该临时变量的生命周期便和szData一样,所以这样取到的cc所指向的内存才是有效的。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
描述
快速回复

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