seekg()是对输入流的操作g是get缩写
输入流类的成员函数的名字seekg由两部分组成。首先是seek(寻找)到文件中的某个地方,其次是"g"表示"get",指示函数在输入流上工作,因为要从输入流获取数据。
要查找的文件中的新位置由两个形参给出:新位置将从由place给出的起始位置开始,偏移offset个字节。offset形参是一个long类型的整数,而place可以是ios类中定义的3个值之一。
起始位置可能是文件的开头、文件的当前位置或文件的末尾,这些地方分别由常量ios::beg、ios::cur和ios::end表示。
扩展资料
seekg函数的使用
#include<iostream>
#include<fstream>
usingnamespacestd;
intmain()
{
//Variablesneededtoreadorwritefileonecharacteratatimecharch;
fstreamioFile("rewind.txt",ios::out);
//Openfile.
if(!ioFile)
{
cout<<"Errorintryingtocreatefile";
return0;
}
//Writetofileandclose
ioFile<<"Allgooddogs"<<endl<<"growl,bark,andeat."<<endl;
ioFile.close();
//Openthefile
ioFile.open("rewind.txt",ios::in);
if(!ioFile)
{
cout<<"Errorintryingtoopenfile";
return0;
}
//Readthefileandechotoscreen
ioFile.get(ch);
while(!ioFile.fail())
{
cout.put(ch);
ioFile.get(ch);
}
//Rewindthefile
ioFile.clear();
ioFile.seekg(0,ios::beg);
//Readfileagainandechotoscreen
ioFile.get(ch);
while(!ioFile.fail())
{
cout.put(ch);
ioFile.get(ch);
}
return0;
}
2013-04-12
* seekg 对输入文件定位,有两个参数:
* 第一个:表示偏移量,可正可负,正表示向后,负表示向前
* 第二个:偏移的基地址,可以是:
* ios::beg 输入流的开始
* ios::cur 输入流的当前位置
* ios::end 输入流的结束
*/
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char* argv[])
{
ifstream in("test.txt");
in.seekg(0, ios::end); // 定位到文件结束处
streampos sp = in.tellg(); // 定位指针,指向文件结尾处,也就是文件大小
cout << "file size:" << sp << endl;
in.seekg(-sp/3, ios::end); // 从end向前移动sp/3个字节
in.seekg(0, ios::beg); // 移动到文件开始
cout << in.rdbuf() << endl; // 读出文件内容
return(0);
}
2013-04-12
函数原型:
ostream& seekp( streampos pos );
ostream& seekp( streamoff off, ios::seek_dir dir ); istream& seekg( streampos pos );
istream& seekg( streamoff off, ios::seek_dir dir );
函数参数 :
pos:新的文件流指针位置值;
off:需要偏移的值;
dir:搜索的起始位置;
dir参数用于对文件流指针的定位操作上,代表搜索的起始位置。