C++:IO缓冲区
1. C++每一个流对象都维护一个缓冲区,缓冲区本质上是一个用于存储输入和输出序列的字符数组,并通过三个指针(begin_pointer,next_pointer,end_pointer)描述,缓冲区按刷新类型分为全缓冲,行缓冲和无缓冲.(具体见《C++ 输入输出流与本地化》)
2. 常用的缓冲区函数
函数 |
作用 |
int peek() |
返回缓冲区下一字符,指针并不后移 |
void get(char ch) |
将缓冲区下一字符取出赋给ch,指针后移 |
char get() |
将缓冲区下一字符取出并返回,指针后移 |
void putback(char ch) |
将之前从流中读取的函数放回到缓冲区并插入到当前指针位置 |
istream &ignore( streamsize num=1, int delim=EOF ) |
忽略接下来的num个字符或遇到delim提前结束,delim也被忽略 |
int sync() |
清除与流关联的缓冲区,返回0代表成功,-1代表失败 |
istream& seekg (streampos pos) |
设置输入流指针指向pos的位置,pos为绝对位置 |
istream& seekg (streamoff off, ios_base::seekdir way) |
设置输入流指针指向相对于way偏移off的位置,ios_base::seekdir可以取以下常量:ios::beg(缓冲区开始),ios::cur(当前位置),ios::end(缓冲区结尾) |
streampos tellg() |
返回指针当前位置 |
ostream& seekp (streampos pos) ostream& seekp (streamoff off, ios_base::seekdir way) |
与seekg类似,用于输入流对象 |
streampos tellp() |
和tellg类似,用于输出流对象 |