设置“输入流指针控制字”的成员函数:
istream&istream::seekg(streampos);
//指针直接定位
istream&istream::seekg(streamoff, ios::seek_dir);
//指针相对定位
long
istream::tellg(); //返回当前指针位置
流的指针位置类型streampos和流的指针偏移类型streamoff定义为长整型,也就是可访问文件的最大长度为4G。例:
datafile.seekg(-20L,ios::cur);
//表示将文件定位指针从当前位置向文件头部方向移20个字节。
datafile.seekg(20L,ios::beg);
//表示将文件定位指针从文件头向文件尾方向移20个字节。
datafile.seekg(-20L,ios::end);
//表示将文件定位指针从文件尾向文件头方向移20个字节。
tellg()和seekg()往往配合使用。
//指针不可移到文件头之前或文件尾之后。
如何定位每一行,这个有点困难,因为不一定每行的偏移量都相同,要么就先计算出每行的偏移量,然后在计算出总偏移量,用上边的seekg函数来定位偏移位置。
还有一种比较笨的办法就是,从开头读,每次读一行,直到读到你需要的那行时候再把读取的数据取出来,getline就是每次读一行,多次调用就可以每行循环下读。
至于你问怎么获得这个随机的行数,我想这个不用我说了吧,获取一个随机的数,用rand函数就行了,先获取出来你要读取的行数,然后按照上边的方法来进行。
温馨提示:答案为网友推荐,仅供参考