tellg()用于获取输入文件流当前读取位置,返回从文件开头到当前位置的字节数,需包含头文件并以输入模式打开文件。

在C++中,tellg() 是用于获取输入文件流(ifstream 或 fstream)当前读取位置的函数。它返回一个 streampos 类型的值,表示从文件开头到当前位置的字节数。
基本用法
要使用 tellg(),需要包含头文件
示例如下:
#include#include int main() { std::ifstream file("example.txt"); if (!file.is_open()) { std::cerr << "无法打开文件" << std::endl; return 1; } // 获取当前读取位置(通常是0,文件开头) auto pos = file.tellg(); std::cout << "当前读取位置: " << pos << " 字节" << std::endl; // 读取一些数据 char buffer[10]; file.read(buffer, 5); // 再次获取位置 pos = file.tellg(); std::cout << "读取5字节后位置: " << pos << " 字节" << std::endl; file.close(); return 0; }
适用场景
tellg() 常用于:
立即学习“C++免费学习笔记(深入)”;
一套面向小企业用户的企业网站程序!功能简单,操作简单。实现了小企业网站的很多实用的功能,如文章新闻模块、图片展示、产品列表以及小型的下载功能,还同时增加了邮件订阅等相应模块。公告,友情链接等这些通用功能本程序也同样都集成了!同时本程序引入了模块功能,只要在系统默认模板上创建模块,可以在任何一个语言环境(或任意风格)的适当位置进行使用!
- 记录当前读取进度,便于后续恢复
- 计算文件中某段内容的偏移量
- 配合 seekg() 实现文件的随机访问
注意事项
只有在输入流(ifstream 或 fstream 输入模式)上才能使用 tellg()。输出流应使用 tellp() 获取写入位置。
如果流发生错误(如文件未打开或读取失败),tellg() 可能返回 -1,使用前建议检查流状态:
if (file.good()) {
auto pos = file.tellg();
std::cout << "当前位置: " << pos << std::endl;
}
基本上就这些。tellg 是一个简单但实用的工具,帮助你掌握文件读取的精确位置。









