2011-04-24 62 views
0

我想製作一個程序,它可以從文件中的某個點讀取文件。 舉例來說,如果我有這個文本文件:C++文件操作:讀取文件中的特定行。

1: 
Hello world. THis is the first string 

2: 
Hello. This is the second string 

3: 
Hi! 

所以,現在我已經提交,我怎樣才能使程序只讀第二個字符串?

+0

您的企圖?你的代碼? – Nawaz 2011-04-24 08:21:57

+3

你必須在第一個字符串中讀取第二個字符串的起始位置 – 2011-04-24 08:22:26

+0

嗯,我沒有真正的代碼,因爲我找不到最好的方法來做到這一點。 我想了一下seekg(數字),這是應該設置獲取位置的數字。但是如果我改變這個文件,我將不得不從一開始就做一切。 – Janman 2011-04-24 08:27:08

回答

3

對於一個本質上是動態的文本文件,您將不得不從一開始就在循環中使用getline()。如果它沒有經常改變,你可以記錄絕對文件位置,然後檢查文件修改日期,以決定是否在自上一次循環getline()以來未修改的情況下執行直接搜索,或者是否再次循環。文件I/O例程沒有什麼魔力可以記憶每個字符串在文件中的結尾。

1

我不會爲你寫任何代碼,只會告訴我會怎麼做。
假設:
字符串的起始格式,例如1:,2:等不出現在字符串的內容中。

方法:

  1. 開始從文件的開頭,並做seekg(),每次遞增get指針,除非你找到你正在尋找如「2的2個字符: 「在一起。
    在那裏停下來,開始提取您的內容,直到您找到表格「number:」的下2個字符,例如「3:」。

  2. 如果您描述的文件格式是這種方式,您可以使用getline()來獲取每一行。這樣你就不必爲每個字符移動指針,但是這隻有在文件中的數據是特定格式時才起作用。