close

按此前往C++完整教學目錄

 

 

輸入/輸出物件的定位:

(1) 輸入物件名稱.seekg(n); 設定輸入物件由字元位置n開始讀取。n為整數,

亦可以用以下三者(又稱ios_base::seekdir列舉型別變數)來設定:

ios_base::beg //輸入資料串流中的起始位置

ios_base::cur //輸入資料串流中的目前位置

ios_base::end //輸入資料串流中的終端位置

例如:

若在C++編譯軟體安裝的目錄或者是特定的工作區底下,有tt.txt檔,內容為:

12345

而程式碼如:

string a;

ifstream fin("tt.txt");

fin.seekg(ios_base::beg+2);

fin>>a;

fin.close();

cout<<a;   //顯示為345

(2) 輸入物件名稱.seekg(n , ios_base::seekdir列舉型別變數); 設定由ios_base::seekdir列舉型別變數的位置相對n個位置的地方開始讀取。其中n為整數。例如:

若在C++編譯軟體安裝的目錄或者是特定的工作區底下,有tt.txt檔,內容為:

12345

而程式碼如:

string a;

ifstream fin("tt.txt");

fin.seekg(-2,ios_base::end);

fin>>a;

fin.close();

cout<<a;  //顯示45

(3) 輸出物件名稱.seekp(n); 設定輸出物件由字元位置n開始存入。n為整數,

或是ios_base::seekdir列舉型別變數但需注意,此方法會覆蓋原本檔案中的內容,沒事少用。如:

若在C++編譯軟體安裝的目錄或者是特定的工作區底下,有tt.txt檔,內容為:

12345

而程式碼如:

ofstream fout("tt.txt");

fout.seekp(3);

fout<<"aa";

fout.close();

tt.txt檔中內容為:

   aa

前三格是空格。

(4) 輸出物件名稱.seekp(n , ios_base::seekdir列舉型別變數); 設定由ios_base::seekdir列舉型別變數的位置相對n個位置的地方開始輸出。其中n為整數。

在資料處理上,以上對檔案的存取方式,稱為隨機存取檔(random-access file)或者是直接存取檔(direct-access file)。意即,程式直接跳到檔案的某位置進行存取,不似傳統方法要一個一個位置、逐項找到該位置再進行存取(稱為循序檔(sequence file))。

arrow
arrow

    埃伯 發表在 痞客邦 留言(0) 人氣()