青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 18,  comments - 104,  trackbacks - 0
相信能看到這里的人,應該都用過std::endl吧,沒見過?

1#include <iostream>
2
3using namespace std;
4
5int main()
6{
7    cout<<"Hello World!"<<endl;
8}

9

就是hello world后面那個。到底這個endl是個什么東西呢? 答案是:函數指針。
這是它的聲明:

1template<class _Elem,
2    class _Traits> inline
3    basic_ostream<_Elem, _Traits>&
4    endl(basic_ostream<_Elem, _Traits>& _Ostr)

當然endl只輸入輸出流,輸入流沒有endl。所以輸出流需要一個類似

basic_ostream& operator<<(basic_ostream&(*)(basic_ostream &))

函數來接受這個endl。

如果想寫個類,比如一個log類,希望可以像標準流一樣的輸出,需要做什么呢?

1class Log
2{
3public:
4    teamplate <typename T>
5    Log& operator<<(const T& t)
6    {
7        // write t to log file.
8    }

9}
;

有了這個定義后,Log類就可以像標準輸出流一樣用了,比如:

1Log log;
2log<<123<<"ABC"<<132.32<<endl;

什么,編譯出錯,而且不止一個。上面說過,是endl引起的問題。
std::endl的定義本身就是個模板函數,用一個模板函數(編譯時連參數都確定不下來)去推導模板參數,是極不現實的。
因為:endl有兩個模板參數,_Elem 和 _Traits,其實_Traints 本身就是個以_Elem為參數的類模板,標準庫里面有兩個endl版本,
一個是 _Elem = char, 另一個是 _Elem = wchar.
所以編譯器不能推導出Log類的operator<<的模板參數T,于是就錯誤了。

解決方案,之前也說過,需要一個接受函數指針的operator<<的重載版本。

1Log& operator<<(basic_ostream<char, char_traits<char>>& (*_Pfn)(basic_ostream<char, char_traits<char>>&))
2    {
3            // write endl to log using _Pfn
4    }

有這個定義,就可以順利使用 <<std::endl 了。
當然可以為wchar定義一個operator<<來使用寬字符,這都是函數重載惹的禍呀。因為char和wchar算是endl函數兩個重載版本。

問題解決了,說一下,同樣的函數還有:

ends,輸入一個字符串結束符。
flush,刷新流。
當然這倆個不常用。
posted on 2009-04-18 19:42 尹東斐 閱讀(4414) 評論(4)  編輯 收藏 引用

FeedBack:
# re: std::endl 是什么?
2009-04-18 20:58 | OwnWaterloo
class slt_like_ostream {

slt_like_ostream&
operator<<(std::ios_base& (*pf)(std::ios_base& );

template< class C, class T >
slt_like_ostream&
operator<<(std::basic_ios< C,T>& (*pf)(std::basic_ios< C, T>&);

template< class C, class T >
operator<<
(std::basic_ostream< C,T>& (*pf)(std::basic_ostream< C,T>&);

};

這是stl對ostream的規范。
如果不實現這些規范, 不能與stl的其他組件(如std::endl)合作也是理所當然的。

  回復  更多評論
  
# re: std::endl 是什么?
2009-04-18 21:08 | 尹東斐
@OwnWaterloo

嗯,就是這樣子的。
其實可以直接從basic_ostream繼承,然后把stream_buf改成自己想要的輸出方式就可以。  回復  更多評論
  
# re: std::endl 是什么?[未登錄]
2009-04-22 17:20 | jans2002
以前遇到自己的Log不能用endl,就把endl都改為"\n"了。
感謝樓主講解。  回復  更多評論
  
# re: std::endl 是什么?
2009-05-12 15:15 | zhaoyg
learn了  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用鏈接

留言簿(4)

隨筆檔案

文章分類

文章檔案

相冊

好友博客

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲福利久久| 国产精品一区二区你懂的| 一区二区91| 99国产麻豆精品| 亚洲午夜未删减在线观看| 在线一区二区三区四区| 亚洲欧美久久| 久久久久久久久伊人| 老司机久久99久久精品播放免费| 美女黄毛**国产精品啪啪| 美国十次成人| 欧美三区不卡| 国产日韩欧美在线观看| 伊人成人开心激情综合网| 亚洲欧洲一区二区三区在线观看| 在线综合+亚洲+欧美中文字幕| 欧美一区二区三区久久精品| 久久久久国产精品一区| 亚洲国产精品黑人久久久| 亚洲美女精品一区| 性高湖久久久久久久久| 欧美99在线视频观看| 欧美亚洲成人网| 在线观看免费视频综合| 亚洲一区二区在线看| 久久久久免费视频| 亚洲另类自拍| 久久男人av资源网站| 欧美午夜免费电影| 亚洲激情另类| 久久精品成人一区二区三区| 一区在线免费观看| 欧美国产第二页| 国产精品一区在线观看| 亚洲精品美女91| 久久精品亚洲| 一区二区av| 欧美77777| 在线观看亚洲视频| 亚洲欧洲av一区二区| 亚洲国产精品久久久久婷婷884| 亚洲男同1069视频| 欧美色图天堂网| 亚洲人成毛片在线播放| 久久亚洲私人国产精品va| 亚洲一区二区黄| 欧美日韩在线第一页| 亚洲免费观看在线观看| 久久五月天婷婷| 午夜亚洲视频| 国产欧美欧美| 欧美在线free| 亚洲伊人网站| 国产精品国产三级国产普通话三级| 最新成人av网站| 亚洲高清123| 欧美成人午夜免费视在线看片| 国产真实精品久久二三区| 久久国产一区二区| 欧美在线播放一区| 一区久久精品| 牛夜精品久久久久久久99黑人| 久久不射电影网| 在线播放中文一区| 欧美成人精品在线| 另类成人小视频在线| 亚洲激情不卡| 亚洲人成网站精品片在线观看| 欧美成人亚洲| 亚洲一区二区三区免费在线观看 | 亚洲欧洲日产国码二区| 欧美77777| 亚洲尤物在线视频观看| 一本一道久久综合狠狠老精东影业| 欧美日韩卡一卡二| 亚洲欧美在线磁力| 性欧美暴力猛交69hd| 狠狠色综合色综合网络| 欧美成人在线免费观看| 欧美日韩国产精品专区| 亚洲欧美另类在线观看| 欧美一区免费| 亚洲精品欧美日韩| 亚洲视频欧洲视频| 国产一区免费视频| 欧美国产日产韩国视频| 欧美性大战久久久久| 久久亚洲欧美| 欧美精彩视频一区二区三区| 欧美成在线观看| 在线播放视频一区| 亚洲人永久免费| 国产精品久久久久久模特| 久久精品亚洲一区| 欧美11—12娇小xxxx| 亚洲尤物视频在线| 久久这里有精品视频| 亚洲综合视频1区| 玖玖玖国产精品| 亚洲欧美影院| 欧美激情久久久久| 久久久青草青青国产亚洲免观| 蜜桃av一区二区三区| 午夜亚洲精品| 欧美激情精品久久久久久免费印度 | 一本大道av伊人久久综合| 国产一区二区日韩精品欧美精品| 亚洲电影自拍| 激情文学综合丁香| 亚洲欧美日韩爽爽影院| 一区二区国产在线观看| 久久精品视频在线免费观看| 亚洲一区二区免费视频| 欧美77777| 美国十次成人| 国产日韩视频一区二区三区| 亚洲精品三级| 亚洲精品国久久99热| 久久成人免费网| 欧美一区激情| 国产精品欧美一区二区三区奶水| 欧美高清视频在线| 黄色成人小视频| 亚洲欧美一区二区原创| 亚洲欧美日韩综合国产aⅴ| 欧美精品在线网站| 亚洲日本在线观看| 亚洲精品乱码久久久久久蜜桃麻豆 | 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品乱码人人做人人爱| 亚洲九九精品| 日韩亚洲视频在线| 欧美黄色大片网站| 亚洲美女毛片| 亚洲愉拍自拍另类高清精品| 欧美视频一区二区三区…| 夜夜嗨av一区二区三区 | 欧美69wwwcom| 亚洲成色777777女色窝| 久热国产精品视频| 亚洲欧洲日产国产综合网| 一本久道久久综合中文字幕| 欧美精品偷拍| 一本色道久久99精品综合| 在线一区二区三区做爰视频网站| 欧美精品激情| av不卡在线看| 亚洲欧美日韩精品久久| 欧美a级一区二区| 免费在线看成人av| 亚洲国产精品专区久久| a4yy欧美一区二区三区| 国产精品国产三级欧美二区 | 亚洲一级片在线观看| 国产精品露脸自拍| 久久精品在线免费观看| 欧美韩日一区二区| 亚洲图色在线| 国产精品自在欧美一区| 亚洲欧美高清| 男男成人高潮片免费网站| 亚洲精品在线视频观看| 欧美午夜在线| 久久国产精品毛片| 91久久午夜| 久久国产毛片| 99re6这里只有精品| 国产精品国产三级国产专播品爱网| 亚洲欧美怡红院| 欧美激情精品久久久六区热门 | 亚洲国产精品传媒在线观看 | 亚洲国产欧美精品| 欧美手机在线| 毛片av中文字幕一区二区| 在线综合亚洲| 欧美国产成人在线| 欧美影院成人| 日韩午夜在线视频| 韩国成人精品a∨在线观看| 欧美精品激情blacked18| 欧美一区二区三区视频免费播放| 欧美激情一区二区三区不卡| 午夜精品久久久久久久蜜桃app| 亚洲成色777777女色窝| 国产欧美日韩激情| 欧美日韩你懂的| 另类激情亚洲| 欧美一区二区性| 亚洲天堂久久| 亚洲欧洲三级电影| 欧美xx69| 久久久噜噜噜久久中文字幕色伊伊 | 小黄鸭精品aⅴ导航网站入口| 亚洲国产精品一区二区第一页 | 欧美亚洲午夜视频在线观看| 亚洲精品免费一二三区| 麻豆成人在线观看| 久久精品亚洲一区二区三区浴池| 亚洲男人av电影| 亚洲专区一区二区三区|