protected virtual member function
<fstream>
streampos seekoff (streamoff off, ios_base::seekdir way, ios_base::openmode which = ios_base::in | ios_base::out);
設定內部位置到相對位置
設定由引數 which 指定的內部位置指標的新位置。此位置是透過相對於 way 指定的原點計算的 off 個字元的偏移量來確定的。
除非 off 為零且 way 為 cur,否則該函式還會將“中間輸出緩衝區”中任何未寫入的字元寫入檔案(如果需要,還會使用適當的 facet 呼叫 unshift)。
成功時,此函式的效果與呼叫 fseek 的等效呼叫相同(有關詳細資訊和限制,例如在以文字模式開啟的檔案上,請參閱 fseek)。
此虛擬函式由公共成員 streambuf::pubseekoff 呼叫。
引數
- off
- 偏移量,相對於 way 引數。
streamoff 是一個有符號整數型別。
- way
- 型別為 ios_base::seekdir 的物件,指示偏移量應用的來源。它可以取以下任意常量值:
值 | 偏移量相對於... |
ios_base::beg | 檔案開頭 |
ios_base::cur | 根據引數 which,是“輸入位置”還是“輸出位置”的當前位置。
|
ios_base::end | 檔案結尾 |
- which
- 確定受影響的是哪個“內部位置指標”:“輸入位置”、“輸出位置”或兩者都受影響。它是一個 ios_base::openmode 型別的物件,對於此函式,它可以接受以下任何顯著常量值的組合:
值 | 受影響的位置指標 |
ios_base::in | 修改“輸入位置”及其對應的“get 指標”(gptr) |
ios_base::out | 修改“輸出位置”及其對應的“put 指標”(pptr) |
兩個位置可以同時選擇,但如果在 way 為 ios_base::cur 時同時選擇兩者,則函式會失敗。
資料競爭
修改 filebuf 物件。
同時訪問同一個檔案流緩衝區物件可能導致資料爭用。
異常安全
基本保證:如果丟擲異常,*檔案流緩衝區*處於有效狀態。