ellg() 和 tellp()
这两个成员函数不用传入参数,返回pos_type 类型的值(根据ANSI-C++ 标准) ,就是一个整数,代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp).
seekg() 和seekp()
这对函数分别用来改变流指针get 和put的位置。两个函数都被重载为两种不同的原型:
seekg ( pos_type position );
seekp ( pos_type position );
使用这个原型,流指针被改变为指向从文件开始计算的一个绝对位置。要求传入的参数类型与函数 tellg 和tellp 的返回值类型相同。
seekg ( off_type offset, seekdir direction );
seekp ( off_type offset, seekdir direction );
使用这个原型可以指定由参数direction决定的一个具体的指针开始计算的一个位移(offset)。它可以是:
ios::beg 从流开始位置计算的位移
ios::cur 从流指针当前位置开始计算的位移
ios::end 从流末尾处开始计算的位移
#include
#include
<fstream>
using
namespace
std;
const
char
* filename=
"
a.txt
"
;
int
main()
long
l,m;
ifstream infile(filename,ios::
in
|ios::binary);
//
以二进制形式建立一个输入流,与文件a.txt建立关联
//
infile.seekg(0,ios::beg);
//
定位读指针位置为文件开始
l=infile.tellg();
//
获取当前读指针位置(字节)
infile.seekg(
0
,ios::end);
//
定位读指针位置为文件结尾
m=infile.tellg();
//
获取当前读指针位置(字节)
infile.close();
//
关闭文件
cout<<
"
sizeof
"
<<
filename;
cout
<<
"
is
"
<<(m-l)<<
"
bytes.\n
"
;
system(
"
pause
"
);
//
暂停一下
return
0
;