ifstream
std::ifstream::end
位于最后一个字符的下一个位置
ifstream()
函数原型:ifstream(const char *filename, std::ifstream::openmode mode);
说明:与open()相同,参考open()
open()
函数原型:void open(const char *filename, std::ifstream::openmode mode);
功能:打开文件
参数:mode可选值如下
std::ifstream::in 读方式打开
std::ifstream::binary 以二进制而非文本格式进行操作
说明:
①检查open操作是否成功:if(fin), if(fin.good());检查是否失败:if(!fin), if(!fin.good())
②读写非文本文件,必须加std::ifstream::binary
tellg()
函数原型:int tellg();
功能:返回输入流中的当前字符位置
说明:
①返回值为当前字符索引,起始索引为0
②返回值的意义:已读字符个数
③读操作,从当前位置的字符开始读取
④C++98和0x,若failbit, badbit任何一个被置位,则该函数返回-1
⑤C++11,若eofbit, failbit, badbit任何一个被置位,则该函数返回-1
示例:
若当前字符位置指向方块,则tellg()值为4,因为方块的索引号为4,表示已读字符数为4(方块之前的四个),read()操作的第一个字符为方块
seekg()
函数原型:
std::istream& seekg(int pos);
std::istream& seekg(int off, ❀ way);
功能:设置当前位置
参数:pos表示绝对位置,即字符索引;off表示相对way的字节偏移,正为前,负为后;
way涵义如下
std::ifstream::beg 起始位置,位于第一个字符,即索引0处
std::ifstream::end 结束位置,位于最后一个字符的下一个位置
std::ifstream::cur 当前位置
当way=std::ifstream::beg,off即字符索引,此时seekg(off, std::ifstream::beg)等价于seekg(off),意为将当前位置设置为索引为offset的字符
说明:
①若failbit, badbit任何一个被置位,则seekg失效,不起任何作用
②eofbit对seekg无影响,即使被置位,seekg也能调用成功,当前位置改变
③C++98和0x,seekg不改变eofbit
④C++11,无论把当前位置设置成何处,只要调用seekg,eofbit即被清零
read()
函数原型:std::istream& read(char *s, int n);
功能:从输入流读取n个字符到s
说明:
①如果输入流中的字符数小于n,则全部读取,存入s,同时置eofbit和failbit
②字符数恰好等于n的情况下,全部读取,存入s,无任何bit被置位
③只要fin.good()不为true,即eofbit, failbit, badbit任何一个被置位,则读操作必失败
operator>>()
函数原型:
template
std::istream& operator>>(T &t);
功能:按格式读取数据
说明:只要fin.good()不为true,即eofbit, failbit, badbit任何一个被置位,则读操作必失败
clear()
函数原型:void clear(std::ifstream::iostate state = goodbit);
功能:设置流的错误状态标志
示例:设置流的eofbit和failbit位,过程如下:
fin.clear(std::ifstream::eofbit | std::ifstream::failbit);
rdstate()
函数原型:std::ifstream::iostate rdstate() const
功能:返回流的内部错误状态标志
示例:清除流的failbit位,过程如下:
fin.clear(fin.rdstate() & ~std::ifstream::failbit);
good()
函数原型:bool good() const;
功能:判断eofbit, failbit, badbit均没有置位
eof()
函数原型:bool eof() const;
功能:判断eofbit已置位
fail()
函数原型:bool fail() const;
功能:判断failbit或badbit已置位
operator bool()
函数原型:operator bool() const;
本质:类型转换运算符
功能:判断failbit和badbit均没有置位
operator!()
函数原型:bool operator!() const;
本质:重载运算符函数
功能:判断failbit或badbit已置位