温馨提示×

c++文件流中seekg()函数问题

c++
小云
105
2023-08-18 15:07:07
栏目: 编程语言

在C++文件流中,seekg()函数用于将文件指针移动到指定位置。它的原型如下:

istream& seekg(streampos pos);
istream& seekg(streamoff off, seekdir way);

第一个原型将文件指针移动到指定的绝对位置pos,streampos是一个类型,表示文件流的位置。

第二个原型将文件指针移动到离当前位置off个字节的位置,way参数指定了移动的方向,它可以取以下值:

  • ios::beg:从文件开头偏移off个字节;

  • ios::cur:从当前位置偏移off个字节;

  • ios::end:从文件末尾偏移off个字节。

seekg()函数返回一个istream类型的引用,在进行文件操作时,可以使用该引用来检测是否发生了错误。

下面是一个示例代码,演示了使用seekg()函数将文件指针移动到文件开头和文件末尾的用法:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream file("test.txt");
if (!file) {
cout << "Error opening file." << endl;
return 1;
}
// 获取文件大小
file.seekg(0, ios::end);
int filesize = file.tellg();
cout << "File size: " << filesize << " bytes" << endl;
// 将文件指针移动到文件开头
file.seekg(0, ios::beg);
char ch;
file.get(ch);
cout << "First character: " << ch << endl;
// 将文件指针移动到文件末尾
file.seekg(0, ios::end);
file.get(ch);
cout << "Last character: " << ch << endl;
file.close();
return 0;
}

在这个示例中,首先打开了一个名为test.txt的文件,并检查文件是否成功打开,如果打开失败,就输出错误信息并返回。

接下来,使用seekg()函数将文件指针移动到文件末尾,并使用tellg()函数获取文件指针的位置,即文件大小。

然后,将文件指针移动到文件开头,并读取第一个字符。最后,将文件指针移动到文件末尾,并读取最后一个字符。

最后,关闭文件并返回。

注意,在使用seekg()函数之前,要先打开文件,并进行错误检查。另外,文件流的位置是从零开始计数的。

0