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

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 尹東斐 閱讀(4407) 評論(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了  回復  更多評論
  
<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>
            欧美性感一类影片在线播放| 亚洲欧洲一区二区三区| 国外成人性视频| 国产人成一区二区三区影院| 国产欧亚日韩视频| 国产主播精品| 亚洲福利视频专区| 日韩一级黄色片| 中文高清一区| 久久大香伊蕉在人线观看热2| 午夜亚洲视频| 久久综合网hezyo| 亚洲激情在线观看| 亚洲欧美日本精品| 免费成人美女女| 国产精品成人在线观看| 国产一区二区久久精品| 亚洲第一天堂av| 99精品国产99久久久久久福利| 老司机久久99久久精品播放免费| aaa亚洲精品一二三区| 亚洲欧美日本日韩| 美女黄网久久| 中文国产一区| 久久久久久久性| 欧美伦理91| 黄色成人av在线| 亚洲无吗在线| 欧美成人激情在线| 亚洲一级在线| 欧美韩国在线| 国模一区二区三区| 亚洲深夜福利视频| 蜜桃av久久久亚洲精品| 亚洲无限av看| 欧美电影电视剧在线观看| 国产手机视频一区二区| 亚洲精品美女免费| 裸体丰满少妇做受久久99精品| 一区二区三区波多野结衣在线观看| 久久久久看片| 国产欧美一区二区精品性色| 一区二区高清在线| 亚洲国产婷婷| 裸体一区二区三区| 激情小说另类小说亚洲欧美| 欧美一区二区三区视频在线观看| 亚洲国产精品一区二区久| 久久久久9999亚洲精品| 国产女主播一区二区三区| 亚洲淫片在线视频| 日韩一区二区精品葵司在线| 欧美不卡视频一区发布| 亚洲国产成人精品久久久国产成人一区| 午夜视频在线观看一区二区三区 | 亚洲一区二区在线播放| 欧美成人蜜桃| 久久综合九色九九| 在线欧美日韩国产| 欧美91精品| 久久亚洲一区二区| 亚洲国产导航| 你懂的一区二区| 久久婷婷亚洲| 亚洲激情小视频| 亚洲欧洲精品一区二区| 欧美—级a级欧美特级ar全黄| 亚洲免费观看高清完整版在线观看熊| 欧美黄色精品| 欧美日韩亚洲网| 亚洲免费婷婷| 亚洲欧美激情四射在线日 | 欧美日韩国产首页| 国产噜噜噜噜噜久久久久久久久| 亚洲直播在线一区| 亚洲欧美久久久久一区二区三区| 国产老女人精品毛片久久| 欧美在线免费视屏| 久久精品国产99精品国产亚洲性色| 国产一区二区看久久| 麻豆成人综合网| 欧美精品三级| 欧美一区二区三区在| 欧美在线国产精品| 亚洲国产精品传媒在线观看 | 欧美一区国产在线| 亚洲欧洲在线播放| 亚洲视频一区二区| 在线不卡亚洲| 日韩亚洲在线观看| 国语自产偷拍精品视频偷| 亚洲欧洲日产国码二区| 国产日本欧美视频| 亚洲高清在线观看| 国产欧美一区二区三区久久 | 久久久久久久综合狠狠综合| 亚洲精品日韩在线观看| 亚洲一区二区在线播放| 亚洲第一免费播放区| 亚洲无玛一区| 亚洲人成在线观看| 亚洲欧美日韩国产综合精品二区| 亚洲成色精品| 一区二区三区成人| 亚洲人体大胆视频| 欧美在线在线| 亚洲欧美高清| 欧美激情亚洲另类| 久久午夜视频| 欧美日韩亚洲三区| 欧美电影在线免费观看网站| 国产精品女人久久久久久| 欧美国产日产韩国视频| 国产精品视频一区二区三区| 亚洲国产精品999| 一区二区三区在线视频播放 | 亚洲欧洲av一区二区三区久久| 亚洲黑丝在线| 久久精品视频网| 久久精品99| 国产精品日韩精品| 亚洲精品一区二区三区99| 在线免费观看视频一区| 欧美一区二区三区在线观看视频| 亚洲午夜精品久久久久久app| 欧美精品日韩| 亚洲国产成人不卡| 最新成人av网站| 美女视频网站黄色亚洲| 久久精视频免费在线久久完整在线看| 亚洲国产欧洲综合997久久| 亚洲欧美另类在线| 亚洲另类自拍| 一本久道综合久久精品| 亚洲尤物视频在线| 久久综合九色欧美综合狠狠| 欧美伦理影院| 国产亚洲成年网址在线观看| 国产一区91| 日韩午夜精品| 欧美一级专区| 欧美aⅴ99久久黑人专区| 夜夜嗨av一区二区三区四季av | 亚洲欧洲日本一区二区三区| 亚洲视频免费在线| 欧美韩国在线| 午夜视频久久久久久| 欧美精品首页| 亚洲国产精品成人va在线观看| 亚洲一区二区三区久久| 欧美国产日韩在线观看| 久久精品亚洲一区| 国产精品一区二区三区乱码| 亚洲色图自拍| 日韩视频在线一区| 欧美片第一页| 一区二区三区三区在线| 亚洲激情欧美激情| 欧美精品免费播放| 亚洲视屏在线播放| 亚洲先锋成人| 国产一区二区电影在线观看| 久久国产精品久久国产精品| 亚洲男人第一av网站| 国产九九视频一区二区三区| 一本久久a久久免费精品不卡| 亚洲人成在线观看| 欧美日韩另类丝袜其他| 久久久激情视频| 一区二区三区精品在线| 欧美精品久久一区| 亚洲电影免费在线观看| 毛片一区二区三区| 免费黄网站欧美| 亚洲欧美成人网| 久久激情网站| 亚洲私人影院在线观看| 亚洲欧美日韩成人| 精品成人一区二区三区四区| 亚洲欧洲美洲综合色网| 亚洲国产视频一区| 亚洲欧美乱综合| 久久aⅴ国产欧美74aaa| 国产一区免费视频| 亚洲一区观看| 91久久在线播放| 亚洲视频欧美在线| 亚洲黄色天堂| 久久精品成人| 欧美一区成人| 欧美性淫爽ww久久久久无| 欧美国产免费| 狠狠色综合一区二区| 亚洲欧美日韩区| 1204国产成人精品视频| 最新日韩在线| 午夜欧美视频| 午夜精品久久久久| 欧美bbbxxxxx| 欧美高清视频在线 |