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

力為的技術博客

聯系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks

用std::find查找文件流中的內容
mythma

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


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



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

 

  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?

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

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

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

2、文件中是異構數據情況的處理

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

  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
---
輸出結果:
1 22 3

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



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

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

評論

# re: 用std::find查找文件流中的內容 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查找文件流中的內容 2006-01-12 20:51 力為
不知道a boy指的還缺少什么。
STL中就是如此使用的。
  回復  更多評論
  

# re: 用std::find查找文件流中的內容 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查找文件流中的內容 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>
            最近看过的日韩成人| 亚洲国产欧美另类丝袜| 校园春色综合网| 亚洲欧美日韩国产中文| 亚洲小说区图片区| 午夜精品久久久久久久蜜桃app| 亚洲色图在线视频| 久久精品免视看| 欧美va天堂| 国产精品盗摄一区二区三区| 国产日韩欧美视频在线| 亚洲高清成人| 亚洲影院在线观看| 噜噜噜噜噜久久久久久91| 91久久久久久久久久久久久| 一区二区三区四区在线| 欧美永久精品| 欧美日本久久| 国产一区二区看久久| 99国产精品久久久久久久久久| 亚洲综合成人在线| 欧美1区免费| 一区二区三区久久精品| 久久一二三区| 国产精品视频精品| 99re国产精品| 女仆av观看一区| 亚洲永久免费精品| 欧美人与性禽动交情品 | 欧美日韩你懂的| 韩国精品久久久999| av成人毛片| 美日韩免费视频| 亚洲在线播放电影| 欧美日韩国产小视频在线观看| 国产一区av在线| 中文精品视频| 亚洲高清在线播放| 久久久久久高潮国产精品视| 国产精品久久久久秋霞鲁丝| 亚洲九九九在线观看| 理论片一区二区在线| 亚洲一区二区免费视频| 欧美少妇一区| 一本色道**综合亚洲精品蜜桃冫 | 亚洲国产一二三| 久久精品在线免费观看| 亚洲在线免费| 国产精品国产三级欧美二区| 亚洲美女区一区| 欧美第一黄网免费网站| 久久国产精品网站| 亚洲国产日韩在线一区模特| 好吊视频一区二区三区四区| 午夜精品视频一区| 一区电影在线观看| 国产精品va在线播放我和闺蜜| 亚洲精品视频免费观看| 欧美好骚综合网| 免费日韩精品中文字幕视频在线| 好吊日精品视频| 免费91麻豆精品国产自产在线观看 | 亚洲黄色一区| 亚洲国产日韩欧美在线动漫| 免费欧美高清视频| 日韩视频在线免费| 日韩视频在线你懂得| 欧美视频一二三区| 性色av一区二区三区在线观看| 亚洲综合国产精品| 韩国欧美国产1区| 欧美成人免费小视频| 欧美激情第8页| 亚洲欧美激情诱惑| 欧美中文字幕久久| 亚洲精品黄色| 亚洲天堂久久| 一区二区三区在线免费视频| 亚洲国产天堂久久国产91| 欧美日韩一区二区三| 欧美在线一二三四区| 久久人人爽人人爽| 一区二区三区欧美日韩| 亚洲影视在线| 在线国产亚洲欧美| 日韩视频一区| 韩国av一区二区三区| 亚洲精品美女| 狠狠入ady亚洲精品| 亚洲国内高清视频| 国产亚洲欧美aaaa| 亚洲精品三级| 在线观看久久av| 亚洲天堂成人| 亚洲精品女人| 西西人体一区二区| 一片黄亚洲嫩模| 欧美专区福利在线| 亚洲午夜国产成人av电影男同| 久久岛国电影| 亚洲图片在区色| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲男女自偷自拍图片另类| 美女精品网站| 久久久久这里只有精品| 欧美日韩视频免费播放| 裸体素人女欧美日韩| 国产精品视频免费观看| 亚洲国产精品免费| 一区二区三区在线高清| 亚洲性感美女99在线| 99www免费人成精品| 另类欧美日韩国产在线| 久久激情久久| 亚洲韩国青草视频| 欧美色图天堂网| 免费不卡视频| 国产欧美三级| 亚洲图中文字幕| 99国产精品久久久久久久成人热| 久久久欧美精品| 久久精品一区二区三区四区| 国产精品久久久久aaaa樱花| 亚洲美女免费视频| 一区二区三区波多野结衣在线观看| 久久亚洲国产成人| 免费人成精品欧美精品| 韩国一区二区三区在线观看 | 99riav久久精品riav| 亚洲精品视频二区| 欧美福利视频一区| 亚洲高清视频一区| 亚洲福利视频三区| 久久婷婷国产综合精品青草| 久久久精品一品道一区| 国产欧美一区二区三区在线老狼| 亚洲手机成人高清视频| 亚洲欧美韩国| 国产精品美女久久久浪潮软件| 一本色道久久综合亚洲精品不| 亚洲视频综合| 国产精品社区| 午夜一级久久| 久久嫩草精品久久久久| 亚洲盗摄视频| 欧美国产视频在线观看| 亚洲国产91| 在线综合亚洲欧美在线视频| 欧美调教视频| 午夜精品福利在线观看| 久久午夜精品| 亚洲人成欧美中文字幕| 欧美激情国产精品| 一区二区免费在线观看| 欧美综合激情网| 亚洲国产高清高潮精品美女| 欧美伦理在线观看| 亚洲一区二区在线| 免费看黄裸体一级大秀欧美| 亚洲美女精品成人在线视频| 国产精品对白刺激久久久| 久久国产主播精品| 亚洲福利视频网| 亚洲综合激情| 亚洲高清在线观看一区| 欧美视频免费在线| 久久精品理论片| 亚洲人午夜精品免费| 欧美一区2区三区4区公司二百 | 尹人成人综合网| 欧美片在线观看| 欧美一区二区三区久久精品茉莉花| 欧美3dxxxxhd| 欧美一区二区三区精品电影| 亚洲国产精品嫩草影院| 国产精品一区在线播放| 猫咪成人在线观看| 一区二区三区四区蜜桃| 欧美电影打屁股sp| 欧美在线视频网站| 一本色道久久加勒比88综合| 国产午夜亚洲精品不卡| 一区二区三区四区五区精品| 久久久久国产精品一区三寸| 亚洲狠狠丁香婷婷综合久久久| 亚洲欧美激情诱惑| 亚洲欧洲午夜| 国产一区日韩欧美| 欧美先锋影音| 欧美精品日日鲁夜夜添| 久久人91精品久久久久久不卡| 亚洲午夜精品一区二区三区他趣| 欧美激情视频一区二区三区免费| 欧美在线视频免费播放| 亚洲一区二区三区四区在线观看 | 国产性猛交xxxx免费看久久| 欧美黄色精品| 欧美 日韩 国产在线 | 午夜欧美大尺度福利影院在线看| 91久久综合|