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

力為的技術(shù)博客

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

用std::find查找文件流中的內(nèi)容
mythma

         在一般的情況下, 我是很少使用迭代器istream_iterator的。最近在為項目編寫一個讀特定格式文件的功能時,發(fā)現(xiàn)使用istream_iterator和std::find能非常方便的實現(xiàn)文件內(nèi)容的查找。


注:以下全部假定是文本文件,二進制文件沒有測試過。



假定要查找的是一個文件中的某個string,可以這樣實現(xiàn):

 

  ifstream fIn("yourfile");
  
if(fIn)
  
{
   istream_iterator
<string> strReader(fIn);// file begin
   istream_iterator<string> strEOF;  // file end

   
string strToFind = "mythma";
   strReader
=find(strReader, strEOF, strToFind);
   
while(strReader != strEOF)
   

     
++strReader;  
    
// do something 
    
//*strReader; //dereference to get current string
    
// find next 
    strReader=find(strReader, strEOF, strToFind);
   }

  }



從上面的代碼可以看出, 此時fIn可以看作是一個存放const string的容器。



題外話:

1、什么時候可以考慮使用istream_iterator?

我覺得,當文件中是同構(gòu)數(shù)據(jù)的時候,使用istream_iterator可以方便的讀取、查找對象。
1) 如果文件中的內(nèi)容都是同一種基本類型的數(shù)據(jù),如int,可以這樣用istream_iterator:
   istream_iterator<int> intReader(fIn);// file begin
   istream_iterator<int> intEOF;  // file end

2) 如果是一個個自定義CUser對象的數(shù)據(jù)順序存放的,需要重載operator >>,然后這樣用:
   istream_iterator<CUser> intReader(fIn);// file begin
   istream_iterator<CUser> intEOF;  // file end

如果需要查找對象,在特定的情況下還需要重載比較運算符。

2、文件中是異構(gòu)數(shù)據(jù)情況的處理

首先文件中所有的內(nèi)容都可以用string來操作,這種處理方式無需討論。
若用istream_iterator<int>讀取包含非int數(shù)據(jù)的文件時會出現(xiàn)什么情況?
經(jīng)測試,當istream_iterator<int>遇到第一個非int數(shù)據(jù)時,迭代終止。
---
測試代碼:

  using namespace std;
  ifstream fIn(
"test.txt");
  
if(fIn)
  
{
   istream_iterator
<int> intReader(fIn);
   istream_iterator
<int> intEOF;

   copy(intReader, intEOF, ostream_iterator
<int>(cout, " "));
  }


---
測試文件test.txt:
1 22 3.4 haha 44 hello
---
輸出結(jié)果:
1 22 3

3、效率問題
istream_iterator除了使代碼看起來比較簡潔外,大家最關(guān)心的恐怕就是效率問題。我沒有測試比較過



以上結(jié)論僅供參考,若有錯誤,歡迎批評。
歡迎大家討論

posted on 2006-01-07 10:21 力為 閱讀(5887) 評論(4)  編輯 收藏 引用 所屬分類: 5. GP&STL&BOOST

評論

# re: 用std::find查找文件流中的內(nèi)容 2006-01-09 14:52 a boy
istream_iterator<string> strReader(fIn);// file begin
istream_iterator<string> strEOF; // file end

這樣就知道strReader指向頭,而strEOF指向尾啦?是不缺點什么?  回復  更多評論
  

# re: 用std::find查找文件流中的內(nèi)容 2006-01-12 20:51 力為
不知道a boy指的還缺少什么。
STL中就是如此使用的。
  回復  更多評論
  

# re: 用std::find查找文件流中的內(nèi)容 2006-01-14 15:03 guest
ifstream fIn("yourfile");
if(fIn)
{
istream_iterator<string> strReader(fIn);// file begin
istream_iterator<string> strEOF; // file end

string strToFind = "mythma";
strReader=find(strReader, strEOF, strToFind);
while(strReader != strEOF)
{

//改正如下:
// do something
//*strReader; //dereference to get current string

++strReader;


strReader=find(strReader, strEOF, strToFind);
}
}

  回復  更多評論
  

# re: 用std::find查找文件流中的內(nèi)容 2006-02-08 07:10 mazha
樓上的畫蛇添足了~  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久综合色一综合色88| 欧美一区二区在线看| 国产亚洲综合精品| 在线观看亚洲精品视频| 亚洲欧美卡通另类91av| 最新日韩在线| 亚洲视频在线观看| 欧美日韩成人在线观看| 欧美精品一区二区精品网 | 国产日韩亚洲| 免费人成网站在线观看欧美高清| 中日韩高清电影网| 欧美日韩视频专区在线播放 | 久久久精品网| 亚洲欧美日韩精品久久亚洲区| 欧美一区二区三区四区高清| 欧美日韩免费一区二区三区视频 | 免费一级欧美在线大片| 亚洲免费视频成人| 国产精品a久久久久久| 亚洲精品一区中文| 欧美成人午夜视频| 亚洲精品中文字| 欧美黄在线观看| 国产喷白浆一区二区三区| 亚洲一区二区成人| 欧美一区二区高清| 国内成+人亚洲| 欧美国产乱视频| 欧美一区二区三区久久精品茉莉花| 国产一区二区中文| 久久久蜜桃精品| 久久综合网络一区二区| 亚洲国产精品女人久久久| 欧美色欧美亚洲另类七区| 西西裸体人体做爰大胆久久久| 亚洲精选一区| 欧美日韩亚洲国产精品| 一区二区三区视频在线| 日韩视频精品在线| 欧美亚洲成人精品| 久久九九久久九九| 久久综合网hezyo| 日韩小视频在线观看专区| 亚洲每日在线| 国产日韩1区| 欧美特黄一区| 日韩亚洲精品视频| 在线亚洲自拍| 国产三级精品在线不卡| 久久视频一区| 一区二区三区高清视频在线观看| 欧美精选午夜久久久乱码6080| 国产在线视频不卡二| 午夜精品国产更新| 欧美在线日韩精品| 亚洲大片在线观看| 日韩视频在线观看| 国产欧美亚洲一区| 欧美ed2k| 国产精品va在线播放我和闺蜜| 久久成人av少妇免费| 另类尿喷潮videofree| 99视频超级精品| 亚洲欧美日韩国产精品| 狠狠v欧美v日韩v亚洲ⅴ| 一区二区av在线| 校园春色综合网| 久久久久综合网| 一区二区三区波多野结衣在线观看| 一区二区三区国产精华| 激情小说亚洲一区| 中文亚洲免费| 亚洲国产欧美一区二区三区久久| 亚洲国产婷婷香蕉久久久久久99| 国产日韩精品视频一区| 亚洲国产精品一区二区第一页| 欧美天天影院| 欧美搞黄网站| 国产亚洲毛片在线| 99精品国产在热久久婷婷| 国内精品伊人久久久久av影院| 亚洲人成小说网站色在线| 国产一区免费视频| 一区二区三区www| 亚洲电影在线| 亚洲一区二区精品在线观看| 亚洲精品欧美日韩专区| 欧美一级艳片视频免费观看| 亚洲一区二区三区在线看 | 蜜桃久久精品乱码一区二区| 久久米奇亚洲| 亚洲精品在线电影| 欧美专区一区二区三区| 亚洲一区二区三区在线观看视频| 欧美成人在线免费视频| 麻豆国产精品一区二区三区 | 免费在线亚洲欧美| 久久嫩草精品久久久久| 国产精品观看| 欧美黄色免费| 在线观看欧美日韩国产| 午夜精品久久久久久久久久久久| 亚洲欧美在线视频观看| 国产精品99久久久久久白浆小说| 美女爽到呻吟久久久久| 久久综合狠狠综合久久激情| 国产欧美日韩综合一区在线播放| 亚洲婷婷在线| 亚洲欧美另类久久久精品2019| 欧美久久电影| 一本久道久久综合中文字幕| 亚洲第一色中文字幕| 久久久久久国产精品mv| 久热re这里精品视频在线6| 国产伊人精品| 久久精品视频导航| 欧美大片一区二区| 亚洲理论电影网| 欧美日韩国产限制| 在线一区欧美| 欧美在线三级| 精品成人a区在线观看| 麻豆精品精华液| 亚洲国产美女| 亚洲一区一卡| 欧美福利视频| 欧美亚洲综合久久| 亚洲国产精品国自产拍av秋霞| 国产精品入口66mio| 亚洲人成网站色ww在线| 亚洲网站在线观看| 国产精品乱子乱xxxx| 午夜久久久久| 久久综合激情| 亚洲精品小视频在线观看| 欧美日韩激情网| 亚洲一级二级在线| 久久久久久噜噜噜久久久精品| 欧美四级在线观看| 99精品视频免费全部在线| 亚洲欧美日韩在线观看a三区| 国产农村妇女精品一二区| 西西裸体人体做爰大胆久久久| 免费h精品视频在线播放| 亚洲人成在线观看一区二区| 欧美日一区二区在线观看 | 欧美激情第9页| 亚洲免费影院| 欧美刺激性大交免费视频| 国产精品99久久久久久久vr| 国产一区二区三区在线观看免费视频 | 欧美国产大片| 亚洲黄色天堂| 亚洲少妇在线| 久久免费精品日本久久中文字幕| 亚洲第一级黄色片| 国产精品v一区二区三区| 久久综合五月天婷婷伊人| 精品成人一区二区三区四区| 欧美精品性视频| 久久精品免费播放| 亚洲视频网在线直播| 欧美激情一区在线观看| 性视频1819p久久| 亚洲美女精品成人在线视频| 国产精品网站在线播放| 久久免费国产精品1| 亚洲伊人一本大道中文字幕| 欧美激情一区二区三区四区| 午夜在线观看欧美| 一区二区三区免费观看| 亚洲福利免费| 国产亚洲欧美激情| 欧美激情精品久久久六区热门| 亚洲一区在线观看视频 | 欧美日韩免费视频| 欧美高清免费| 久久久免费观看视频| 亚洲欧美中文日韩v在线观看| 欧美激情一区在线| 蜜臀av性久久久久蜜臀aⅴ| 在线视频精品| 亚洲美女在线国产| 亚洲人成网站精品片在线观看| 国产精品二区在线观看| 欧美午夜在线一二页| 亚洲一区精彩视频| 99精品国产热久久91蜜凸| 亚洲国产一区二区三区高清| 欧美电影在线观看| 久久精品在线| 欧美一区二区三区另类 | 久久频这里精品99香蕉| 性欧美videos另类喷潮| 午夜精品www| 亚洲欧美文学| 亚洲人成人一区二区在线观看| 国产一级一区二区| 欧美日韩一区二区视频在线观看|