• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            力為的技術(shù)博客

            聯(lián)系 聚合 管理
              154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks

            ?取得std::ostringstream里的內(nèi)容可以通過(guò)str()和str(string&)成員函數(shù)。由于str()返回的是臨時(shí)對(duì)象,因而會(huì)有如下誤用:

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

            pBuffer指向的內(nèi)存已被析夠!

            測(cè)試代碼:

            ????????ostringstream?oss;
            ????????oss?
            << ? " something?you?like " ? << ?endl;

            // ?can't?work!
            ???????? const ? char * ?szData1? = ?oss.str().c_str();
            ????????
            // work!
            ???????? string & ?ss? = ?oss.str();
            ????????
            const ? char * ?szData2? = ?ss.c_str();


            例子:
            用std::ostringstream獲取整個(gè)文件的內(nèi)容:

            ????????ifstream?ifs( " in.txt " );

            ????????istream_iterator
            < char > ?inpos(ifs);
            ????????istream_iterator
            < char > ?endpos;
            ????????ostream_iterator
            < char > ? out (oss);
            ????????std::copy(inpos,?endpos,?
            out );

            // 有些情況下需要取得buffer:
            ???????? string & ?ss? = ?oss.str();
            ????????
            const ? char * ?szData? = ?ss.c_str();


            ?

            posted on 2006-06-08 16:49 力為 閱讀(6467) 評(píng)論(5)  編輯 收藏 引用 所屬分類(lèi): 4. C++ FAQ

            評(píng)論

            # re: std::ostringstream::str()返回臨時(shí)對(duì)象 2006-06-08 17:26 LOGOS
            const char * szData1 = oss.str().c_str();
            szData1[0] == '\0';
            不過(guò)既然是臨時(shí)變量,你這么用
            string & ss = oss.str();
            const char * szData2 = ss.c_str();
            不符合規(guī)范吧  回復(fù)  更多評(píng)論
              

            # re: std::ostringstream::str()返回臨時(shí)對(duì)象 2006-06-08 17:30 wzq
            To LOGOS:
            but it really works!  回復(fù)  更多評(píng)論
              

            # re: std::ostringstream::str()返回臨時(shí)對(duì)象 2006-06-08 17:48 力為
            to LOGOS:
            這種情況下編譯器一般會(huì)做擴(kuò)展:
            為臨時(shí)變量設(shè)置引用,那么臨時(shí)變量的生命周期將和引用的生命周期一致  回復(fù)  更多評(píng)論
              

            # re: std::ostringstream::str()返回臨時(shí)對(duì)象 2006-06-12 21:41 ooo
            // 有些情況下需要取得buffer:
            string & ss = oss.str();
            const char * szData = ss.c_str();

            這是是不是該該成:
            const string & ss = oss.str();
            const char * szData = ss.c_str();

            為臨時(shí)變量設(shè)置引用,那么臨時(shí)變量的生命周期將和引用的生命周期一致 ,
            就應(yīng)該加上 const, 可是在VC6.0上對(duì)這個(gè)語(yǔ)句string & ss = oss.str();且沒(méi)有錯(cuò)誤的提示.
              回復(fù)  更多評(píng)論
              

            # re: std::ostringstream::str()返回臨時(shí)對(duì)象 2006-12-13 10:26 jlupaopao
            @ooo
            g++下確實(shí)會(huì)有錯(cuò)誤報(bào)告
            error: invalid initialization of non-const reference of type 'std::string&' from a temporary of type 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >'

            加上const就好了,其實(shí)加上const等同于
            string temp =oss.str();
            const string & ss = temp
            const char * szData = ss.c_str();
            既然如此為什么不直接寫(xiě)string ss =oss.str(); 呢
              回復(fù)  更多評(píng)論
              

            亚洲精品乱码久久久久久按摩| a级毛片无码兔费真人久久| 久久精品18| 91麻精品国产91久久久久| 色综合久久精品中文字幕首页| 久久精品人人做人人妻人人玩| 97久久超碰国产精品2021| 中文字幕成人精品久久不卡 | 国产精品视频久久久| 99国产精品久久| 人妻精品久久久久中文字幕| 久久天天躁狠狠躁夜夜av浪潮| 久久久久久久波多野结衣高潮| 久久精品无码午夜福利理论片| 亚洲国产天堂久久综合网站| 久久久久亚洲av综合波多野结衣| 久久久综合九色合综国产| 久久丝袜精品中文字幕| 久久丫精品国产亚洲av不卡| 精品一久久香蕉国产线看播放| 久久丫精品国产亚洲av| 精品久久久久久无码中文字幕| 久久99精品久久久大学生| 久久国产高清字幕中文| 亚洲精品乱码久久久久久久久久久久 | 久久国产成人精品国产成人亚洲| 77777亚洲午夜久久多喷| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区| 色播久久人人爽人人爽人人片aV | 大蕉久久伊人中文字幕| 伊人久久大香线蕉AV色婷婷色| 久久国产成人亚洲精品影院| 久久ww精品w免费人成| 亚洲欧美日韩久久精品| 久久99热这里只有精品国产| 97久久天天综合色天天综合色hd| 99精品国产免费久久久久久下载 | 精品一二三区久久aaa片| 久久夜色精品国产亚洲av| 99国内精品久久久久久久| 久久er热视频在这里精品|