istream& read(char* s, streamsize n):从流中读取n个字符放到s指向的数组中,读取过程中不会检查数据(意味着读取到空格或者
换行符不会停止读取),也不会自动添加一个null作为字符串结束符,如果碰到EOF则函数结束,并置eofbit和failbit为1;如果流中
的字符数目超出了指定数目,则剩下的字符依然保存在流中,见3.cpp
ostream& write(const char* s, streamsize n):从s指向数组中取出n个字符放到流中,提取过程中不会检查数据(意味着即使读取
的是null也不会停止提取),见3_plus_1.cpp
steamsize gcount() const:返回上一次非格式化提取运算符所读取的字符数,即返回的是get()、getline()、ignore()或者read()
函数所读取的字符数,而不能用于提取operator>>()函数所提取的字符数,见3_plus_2.cpp及3_plus_3.cpp
注:对于get()函数,读取的是n-1个字符;对于getline()函数,如果第n个字符不是结束符delim,则读取的是n-1个字符;如果第n个
字符是结束符delim,则读取的是n个字符,且读取结束符后会将其抛弃,这同前面将的get()和getline()函数是一样的
int peek():返回输入流的下一个字符,如果处于文件末尾,则返回EOF,见3_plus_4.cpp
注:该函数只是查看输入流中的数据,并不会真正的提取数据并写在标准输出设备上
istream& putback(char c):将一个字符从输入流中丢弃,并用字符ch代替插入到输入流中,见3_plus_5.cpp假如我们指向读取文件指定位置之后数据,那么fstream类的seekg()成员函数可以为我们达到目的。
seekg()函数原型如下:
istream& seekg( streampos pos );
istream& seekg( streamoff off, ios::seek_dir dir );
该函数从istream类继承而来,它被重载了两次,第1个原型将指针定位到离文件开头pos个字节处;第2个原型则将指针定位到距第2个参数
指定的位置off个字节处。假如我们想要在文件指定位置处输出数据,那么fstream类的seekp()成员函数可以为我们达到目的。
seekp()函数原型如下:
ostream& seekp( streampos pos );
ostream& seekp( streamoff off, ios::seek_dir dir );
一般来说,第2个参数有下列几种可能的值:
ios::beg //相对于文件开头的偏移量
ios::cur //相对于当前位置的偏移量
ios::end //相对于文件结尾的偏移量
streampos tellg():返回输入流中当前指针的位置
streampos tellp():返回输出流中当前指针的位置
文件状态位
goodbit 无错误
eofbit 已到达文件末尾
failbit 非致命的I/O错误
badbit 致命的I/O错误
ios::rdstate() 获取文件状态位信息
注:
1.对于fstream对象来说,seekp()/seekg()等价,因为读写指针是同一个指针,而且tellg()/tellp()也等价,因为读写指针在同一个位置。
而对于ifstream/ofstream就需要使用特定函数。
原文:http://www.cnblogs.com/kevinq/p/4492977.html