C语言的seekg函数,C++ seekg函数用法详解[通俗易懂]

C语言的seekg函数,C++ seekg函数用法详解[通俗易懂]很多时候用户可能会这样操作,打开一个文件,处理其中的所有数据,然后将文件倒回到开头,再次对它进行处理,但是这可能有点不同。例如,用户可能会要求程序在数据库中搜索某种类型的所有记录,当这些记录被找到时,用户又可能希望在数据库中搜索其他类型的所有记录。文件流类提供了许多不同的成员函数,可以用来在文件中移动。其中的一个方法如下:seekg(offset,place);这个输入流类的成员函数的名字se…

大家好,又见面了,我是你们的朋友全栈君。

很多时候用户可能会这样操作,打开一个文件,处理其中的所有数据,然后将文件倒回到开头,再次对它进行处理,但是这可能有点不同。例如,用户可能会要求程序在数据库中搜索某种类型的所有记录,当这些记录被找到时,用户又可能希望在数据库中搜索其他类型的所有记录。

文件流类提供了许多不同的成员函数,可以用来在文件中移动。其中的一个方法如下:

seekg(offset, place);

这个输入流类的成员函数的名字 seekg 由两部分组成。首先是 seek(寻找)到文件中的某个地方,其次是 “g” 表示 “get”,指示函数在输入流上工作,因为要从输入流获取数据。

要查找的文件中的新位置由两个形参给出:新位置将从由 place 给出的起始位置开始,偏移 offset 个字节。offset 形参是一个 long 类型的整数,而 place 可以是 ios 类中定义的 3 个值之一。起始位置可能是文件的开头、文件的当前位置或文件的末尾,这些地方分别由常量 ios::beg、ios::cur 和 ios::end 表示。

有关在文件中移动的更多信息将在后面的章节中给出,目前先来关注如何移动到文件的开头。要移到文件的开始位置,可以使用以下语句:

seekg(0L,ios::beg);

以上语句表示从文件的开头位置开始,移动 0 字节,实际上就是指移动到文件开头。

注意,如果目前已经在文件末尾,则在调用此函数之前,必须清除文件末尾的标志。因此,为了移动到刚读取到末尾的文件流 dataln 的开头,需要使用以下两个语句:

dataIn.clear();

dataIn.seekg(0L, ios::beg);

下面的程序演示了如何倒回文件的开始位置。它首先创建一个文件,写入一些文本,并关闭文件;然后打开文件进行输入,一次读取到最后,倒回文件开头,然后再次读取:

//Program shows how to rewind a file. It writes a text file and opens it for reading, then rewinds

// it to the beginning and reads it again.

#include

#include

using namespace std;

int main()

{

// Variables needed to read or write file one character at a time char ch;

fstream ioFile(“rewind.txt”, ios::out);

// Open file.

if (!ioFile)

{

cout << “Error in trying to create file”;

return 0;

}

// Write to file and close

ioFile << “All good dogs” << endl << “growl, bark, and eat.” << endl;

ioFile.close();

//Open the file

ioFile.open (“rewind.txt”, ios::in);

if (!ioFile)

{

cout << “Error in trying to open file”;

return 0;

}

// Read the file and echo to screen

ioFile.get(ch);

while (!ioFile.fail())

{

cout.put(ch);

ioFile.get(ch);

}

//Rewind the file

ioFile.clear();

ioFile.seekg(0, ios::beg);

//Read file again and echo to screen

ioFile.get(ch);

while (!ioFile.fail())

{

cout.put(ch);

ioFile.get(ch);

}

return 0;

}

程序输出结果:

All good dogs

growl, bark, and eat.

All good dogs

growl, bark, and eat.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131548.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac idea2021.4.3 激活码(破解版激活)

    mac idea2021.4.3 激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    380
  • Java课程设计之 学生成绩管理系统「建议收藏」

    Java课程设计之 学生成绩管理系统「建议收藏」实现内容:设计开发一个学生成绩管理系统(1)根据实现的功能,划分出合理的对象类,明确各个对象类之间的关系。为各个对象类设计正确的域和方法,为每个方法设计合理的方法体。同时,为对象类及内部的域和方法运用正确的修饰符。功能要求:(1)录入成绩(2)查询成绩(3)成绩排序(4)修改成绩(5)删除成绩(6)将数据保存在数据库表中该课程设计涉及MySQL数据库,建表操作,java操作SQL语句(JDBC数据库操作)以及JavaS

    2022年7月9日
    24
  • python灰度图生成g代码_artcam pro 通过灰度图生成G代码详细图文教程

    python灰度图生成g代码_artcam pro 通过灰度图生成G代码详细图文教程本文是使用artcampro把灰度图转成G代码,看到喜欢的雕刻,可以自己先做成灰度图,然后转换成G代码,今天特地做了一个教程,仅供刚刚接触者使用!新手可以看看,老手请高抬贵手,不要嘲笑。自己技术有限,将就看吧!希望对大家有用!灰度图生成G代码详细图文教程如下:1、先找一张灰度图:2、打开软件,点“文件”–“新的”–“通过图像文件”,找到刚才自己打开的灰度图,双击图片就可以了。3、设置雕刻尺…

    2022年6月20日
    47
  • asp.net页面的AutoEventWireup=”true”属性设置

    asp.net页面的AutoEventWireup=”true”属性设置1、如果设置AutoEventWireup=”true”,那么页面首次加载的时候isPostback=false;会自动执行Page_Load方法触发页面的事件时(如按钮单击),也会先执行Page_Load方法(只是这个时候的isPostback=true),接着再去执行对应的事件2、如果设置AutoEventWireup=”false”,那么Page_Load方法将不会被执行,触发页面的事

    2022年5月8日
    36
  • HashMap原理<转>

    HashMap原理<转>

    2021年9月7日
    55
  • 视图自己定义旋转动画 相似百度音乐

    视图自己定义旋转动画 相似百度音乐

    2022年2月2日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号