文件流類轉(zhuǎn)載總結(jié)

轉(zhuǎn)載至http://c.biancheng.net/view/1537.html
很多時候用戶可能會這樣操作慈缔,打開一個文件嘀趟,處理其中的所有數(shù)據(jù),然后將文件倒回到開頭,再次對它進行處理谴古,但是這可能有點不同牺蹄。例如惨远,用戶可能會要求程序在數(shù)據(jù)庫中搜索某種類型的所有記錄躯枢,當(dāng)這些記錄被找到時,用戶又可能希望在數(shù)據(jù)庫中搜索其他類型的所有記錄司忱。

提供了許多不同的成員函數(shù)皇忿,可以用來在文件中移動。其中的一個方法如下:

seekg(offset, place);

這個輸入流類的成員函數(shù)的名字 seekg 由兩部分組成坦仍。首先是 seek(尋找)到文件中的某個地方鳍烁,其次是 "g" 表示 "get",指示函數(shù)在輸入流上工作繁扎,因為要從輸入流獲取數(shù)據(jù)老翘。

要查找的文件中的新位置由兩個形參給出:新位置將從由 place 給出的起始位置開始,偏移 offset 個字節(jié)锻离。offset 形參是一個 long 類型的整數(shù),而 place 可以是 ios 類中定義的 3 個值之一墓怀。起始位置可能是文件的開頭汽纠、文件的當(dāng)前位置或文件的末尾,這些地方分別由常量 ios::beg傀履、ios::cur 和 ios::end 表示虱朵。

有關(guān)在文件中移動的更多信息將在后面的章節(jié)中給出,目前先來關(guān)注如何移動到文件的開頭钓账。要移到文件的開始位置碴犬,可以使用以下語句:

seekg(0L,ios::beg);

以上語句表示從文件的開頭位置開始,移動 0 字節(jié)梆暮,實際上就是指移動到文件開頭服协。

注意,如果目前已經(jīng)在文件末尾啦粹,則在調(diào)用此函數(shù)之前偿荷,必須清除文件末尾的標(biāo)志窘游。因此,為了移動到剛讀取到末尾的文件流 dataln 的開頭跳纳,需要使用以下兩個語句:

dataIn.clear();
dataIn.seekg(0L, ios::beg);

下面的程序演示了如何倒回文件的開始位置忍饰。它首先創(chuàng)建一個文件,寫入一些文本寺庄,并關(guān)閉文件艾蓝;然后打開文件進行輸入,一次讀取到最后斗塘,倒回文件開頭赢织,然后再次讀取:

<pre class="cpp sh_cpp snippet-formatted sh_sourceCode">

1.  //Program shows how to rewind a file. It writes a text file and opens it for reading, then rewinds
2.  // it to the beginning and reads it again.
3.  #include <iostream>
4.  #include <fstream>
5.  u[sin](http://c.biancheng.net/ref/sin.html)g namespace std;

7.  int main()
8.  {
9.  // Variables needed to read or write file one character at a time char ch;
10.  fstream  ioFile("rewind.txt", ios::out);
11.  // Open file.
12.  if (!ioFile)
13.  {
14.  cout << "Error in trying to create file";
15.  return 0;
16.  }
17.  // Write to file and close
18.  ioFile << "All good dogs" << endl << "growl, bark, and eat." << endl;
19.  ioFile.close();
20.  //Open the file
21.  ioFile.open ("rewind.txt", ios::in);
22.  if (!ioFile)
23.  {
24.  cout << "Error in trying to open file";
25.  return 0;
26.  }
27.  // Read the file and echo to screen
28.  ioFile.get(ch);
29.  while (!ioFile.fail())
30.  {
31.  cout.put(ch);
32.  ioFile.get(ch);
33.  }
34.  //Rewind the file
35.  ioFile.clear();
36.  ioFile.seekg(0, ios::beg);
37.  //Read file again and echo to screen
38.  ioFile.get(ch);
39.  while (!ioFile.fail())
40.  {
41.  cout.put(ch);
42.  ioFile.get(ch);
43.  }
44.  return 0;
45.  }

</pre>

程序輸出結(jié)果:

All good dogs
growl, bark, and eat.
All good dogs
growl, bark, and eat.
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逛拱,一起剝皮案震驚了整個濱河市敌厘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌朽合,老刑警劉巖俱两,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異曹步,居然都是意外死亡宪彩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門讲婚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尿孔,“玉大人,你說我怎么就攤上這事筹麸』詈希” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵物赶,是天一觀的道長白指。 經(jīng)常有香客問我,道長酵紫,這世上最難降的妖魔是什么告嘲? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮奖地,結(jié)果婚禮上橄唬,老公的妹妹穿的比我還像新娘。我一直安慰自己参歹,他們只是感情好仰楚,可當(dāng)我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般缸血。 火紅的嫁衣襯著肌膚如雪蜜氨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天捎泻,我揣著相機與錄音飒炎,去河邊找鬼。 笑死笆豁,一個胖子當(dāng)著我的面吹牛郎汪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播闯狱,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼煞赢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哄孤?” 一聲冷哼從身側(cè)響起照筑,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瘦陈,沒想到半個月后凝危,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡晨逝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年蛾默,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捉貌。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡支鸡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出趁窃,到底是詐尸還是另有隱情牧挣,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布醒陆,位于F島的核電站浸踩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏统求。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一据块、第九天 我趴在偏房一處隱蔽的房頂上張望码邻。 院中可真熱鬧,春花似錦另假、人聲如沸像屋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽己莺。三九已至奏甫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凌受,已是汗流浹背阵子。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胜蛉,地道東北人挠进。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像誊册,于是被迫代替她去往敵國和親领突。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容

  • [轉(zhuǎn)]C/C++ 文件讀寫操作總結(jié) 在編程的過程中案怯,文件的操作是一個經(jīng)常用到的問題君旦,在C++Builder中,可以...
    天之道天知道閱讀 5,199評論 0 7
  • C/C++輸入輸出流總結(jié) 前兩天寫C++實習(xí)作業(yè)嘲碱,突然發(fā)現(xiàn)I/O是那么的陌生金砍,打了好長時間的文件都沒有打開,今天終...
    LuckTime閱讀 1,731評論 0 6
  • 一悍汛、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,744評論 0 10
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,381評論 0 5
  • 今天和朋友聊天捞魁,無意中說起從前每天每天都在QQ空間留言板記錄自己的心情和日常,朋友馬上就去翻看了离咐。剛剛自己也...
    側(cè)子閱讀 64評論 0 0