简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:理解C++之ifstream成员函数get()、tellg()、eof()作用与用法。
-
get()
函数是用于从文件中获取一个字符的成员函数。它有几种重载形式。常用的形式是get()
和get(char& ch)
。
使用get()
,它会返回一个int
类型的值,表示从文件中获取的字符。如果文件读取成功,它将返回非零值,如果到达文件结束,则返回EOF
。 -
tellg()
函数用于获取文件流当前的位置,返回一个streampos
类型的值,表示当前的位置指针位置。 -
eof()
函数用于检查文件流是否到达文件的末尾。如果到达文件末尾,它将返回非零值,否则将返回 0。通常,它是作为循环条件与get()
函数一起使用。
2.应用实例
#include <iostream>
#include <fstream>//ASCII码为48对应的字符是数字0,ASCII码为10对应的字符是换行符('\n').
int main() {std::ifstream inputFile("11.txt"); // 打开文件:11.txt内容:0123456789if (inputFile.is_open()) {char ch;int position = inputFile.tellg();while(inputFile.get(ch)) {printf("xxx--------->position: %d, ch = %d\n",position,ch);position = inputFile.tellg(); // 获取当前位置,随着inputFile.get(ch)一直读取,tellg的位置一直向下移动。//检查是否已到达文件末尾(遇到\n符号结束.)// if(inputFile.eof()) {// std::cout << "Reached end of file." << std::endl;// break;// }}inputFile.close();}return 0;
}
打印
xxx--------->position: 1, ch = 48 //ASCII为10对应的字符为0。
xxx--------->position: 2, ch = 49
xxx--------->position: 3, ch = 50
xxx--------->position: 4, ch = 51
xxx--------->position: 5, ch = 52
xxx--------->position: 6, ch = 53
xxx--------->position: 7, ch = 54
xxx--------->position: 8, ch = 55
xxx--------->position: 9, ch = 56
xxx--------->position: 10, ch = 57
xxx--------->position: 11, ch = 10 //ASCII为10对应的字符为'\n'。