0

初めてseekgを使おうとしています。ドキュメントでは、引数は次のようになります。

istream& シーク ( streampos pos );

istream& seekg ( streamoff off, ios_base::seekdir dir );

From what I understood, 'streampos pos' could be an int? I saw examples like "seekg(0)" However when try to compile this it says I'm using invalid arguments:

void function(int pos){
ifstream reader("data.dat");
if(!reader.is_open())
    return 0;
int posinArchive = pos * 74;
reader.seekg(posinArchive);

I even tried to cast it to streampos directly:

  void function(int pos){
ifstream reader("data.dat");
if(!reader.is_open())
    return 0;
int posinArchive = pos * 74;
reader.seekg((streampos)posinArchive);

same thing. seekg(0), nothing too. What's wrong?

4

1 に答える 1

0

最初のバージョン

stream& seekg ( streampos pos );

への呼び出しから以前に取得した位置をシークしたい場合に使用することになっていますtellg

位置 0 をシークしたい場合seekg(0, ios::beg)は、ファイルの先頭からオフセットをゼロにするために使用する必要があります。

于 2012-07-05T11:22:38.527 に答える