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.

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 紫光同创国产FPGA学习之Power Calculator

    紫光同创国产FPGA学习之Power Calculator紫光同创里面的,芯片功耗计算。没看过,没用过。有兴趣瞄一下。我又不用再电池行业,对电源没啥要求。没用经验之谈,拷贝参考书。一、总体介绍  (一)PangoPowerCalculator总体介绍PangoPowerCalculator是用来计算用户设计产生功耗的软件,简称PPC,是集成在PDS中的一个组件。用户在完成design设计,经过综合、map、布局布线后,可以使用P…

  • 一步一步写算法(之排序二叉树)[通俗易懂]

    一步一步写算法(之排序二叉树)[通俗易懂]【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing@163.com】   前面我们讲过双向链表的数据结构。每一个循环节点有两个指针,一个指向前面一个节点,一个指向后继节点,这样所有的节点像一颗颗珍珠一样被一根线穿在了一起。然而今天

  • thinkcmf,thinksns,thinkphp,onethink三者是什么关系?

    thinkcmf,thinksns,thinkphp,onethink三者是什么关系?

    2021年10月21日
  • tga文件解析「建议收藏」

    Tga常见的格式有非压缩RGB和压缩RGB两种格式,文件的第三个Byte位作为标记:2为非压缩RGB格式,10为压缩RGB格式。这里的类只实现读取非压缩格式的tga文件。先给出tga文件的文件格式:名称偏移长度说明图像信息字段长度01本字段是1字节无符号整型,指出图像信息字段

  • IntelliJ IDEA快速入门 | 第三篇:彻底卸载IntelliJ IDEA

    IntelliJ IDEA快速入门 | 第三篇:彻底卸载IntelliJ IDEA写在前面之前,笔者在自己本机上就已经安装过了一个IntelliJIDEA,只不过其版本是2019.1.3,在桌面上的快捷方式如下图所示。而且之前我也已经将其激活成功教程了,就是网上找的方案来进行激活成功教程的,激活成功教程之后确实能用,不过由于那个时候我还在用Eclipse做Java后端开发,所以一直都没用IntelliJIDEA,不知道过了多长时间,打开它发现已过试用期,MD,老子不是已经激活成功教程过了吗,而且好像还能用到2099年,就这,就这,就这,就这就不能用了????各位看官老爷们,今天是2021年3月23日,下午1

  • Verilog语言入门

    基础#号后面加延迟时间,单位为一个单位时间b表示二进制、d表示十进制、o表示八进制、h表示十六进制十进制可以表示0-9,其他三种除了原有的表示外新增了X->逻辑不定态,Z->高阻态Verilog数值集合由:0代表逻辑0或假状态,1代表逻辑1或真状态,X代表逻辑不定态,Z代表高阻态表示格式:<位宽>’<基数><数值&…

发表回复

您的电子邮箱地址不会被公开。

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