Sun Studio 12 Update 1: C++ ユーザーズガイド

14.4.1.5 ファイル内の位置の再設定

ファイル内の読み込み位置と書き込み位置を変更することができます。そのためには次のようなツールがあります。


enum seek_dir {beg=0, cur=1, end=2};

fstream aFile の位置再設定の例を次に示します。


streampos original = aFile.tellp();     //save current position
aFile.seekp(0, ios::end); //reposition to end of file
aFile << x;               //write a value to file
aFile.seekp(original);    //return to original position

seekg (seekp) は、1 つまたは 2 つの引数を受け取ります。引数を 2 つ受け取るときは、第 1 引数は、第 2 引数で指定した seek_dir 値が示す位置からの相対位置となります。たとえば、次のようにします。


aFile.seekp(-10, ios::end);

この例では、ファイルの最後から 10 バイトの位置に設定されます。


aFile.seekp(10, ios::cur);

一方、次の例では現在位置から 10 バイト進められます。


注 –

テキストストリーム上での任意位置へのシーク動作はマシン依存になります。ただし、以前に保存した streampos の値にいつでも戻ることができます。