zoukankan      html  css  js  c++  java
  • std::ostringstream::str()返回临时对象

    取得std::ostringstream里的内容可以通过str()和str(string&)成员函数。由于str()返回的是临时对象,因而会有如下误用:

    const char *  pBuffer  =  oss.str().c_str();

    pBuffer指向的内存已被析够!
    测试代码:

    ostringstream oss;
            oss 
    << " something you like " <<  endl;
     
     
    //  can't work!
     const char *  szData1  =  oss.str().c_str();
     
     
    // work!
    std::string  ss  =  oss.str();
     
    const char *  szData2  =  ss.c_str();

    例子:
    用std::ostringstream获取整个文件的内容:        

    ifstream ifs( " in.txt " );
     
            istream_iterator
    < char >  inpos(ifs);
            istream_iterator
    < char >  endpos;
            ostream_iterator
    < char > out (oss);
            std::copy(inpos, endpos, 
    out );
     
     
    // 有些情况下需要取得buffer:
    std::string  ss  =  oss.str();
     
    const char *  szData  =  ss.c_str();
  • 相关阅读:
    51nod 1227 平均最小公倍数
    51nod 1238 最小公倍数之和 V3
    「G2016 SCOI2018 Round #2」B
    51nod 1258 序列求和 V4
    2301: [HAOI2011]Problem b
    POJ
    NOIP2017解题报告
    笔记-[ZJOI2014]力
    题解-Little C Loves 3 III
    李超线段树
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1998213.html
Copyright © 2011-2022 走看看