いくつかのレコードを含むテキストファイルがあります。各レコードは、100文字の長さの1行に格納されます。
n番目のレコードに直接アクセスしたいとします。forループを使用して、レコードに到達するまでn行を読み取ることができます。
しかし、どうすれば直接アクセスできますか?
各行の長さが正確に100文字で、行末が常に\n
(つまり、何も含まれていない\r\n
)で、空白行がなく、8つのスペースなどに1つのタブを使用しない場合(ifstreamを使用)
fin.seekg(101 * n, ios::beg); // Assume the initial record has n=0.
または(FILE *を使用)
fseek(f, 101 * n, SEEK_SET);
前提条件のいずれかがわからない場合は、ループを使用してください。
seekg関数を使用できます。
ifstream is("test.txt");
is.seekg ( (n-1)*100, ios::beg); // move the get pointer to the beg of nth record.