輸入/輸出物件的定位:
(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))。
留言列表