fflush(文件指针)
fflush()用于刷新相应文件的缓存区。
使用getchar()函数来清空标准输入缓存区
上面的fflush是一个函数,有些编译器不一定支持,这时候我们可以自己实现清空标准输入缓存区的操作。
代码示例:
使用scanf()的高级特性来清空标准输入缓存区
上面代码的意思是: 首先读取缓冲区中除换行符之外的数据,然后读取缓冲区中的换行符,实现清空缓存区。
c++中cin中的sync()函数清空输入缓存区 -- gcc和vc++
cin.sync()可以清空cin的输入缓存区,但是并不是所有的编译器都支持。比如:vc++和gcc可以,但是在vs中是没有效果的。
那么在vs中怎样清空缓存区呢?
cin.ignore(count,字符); 这句话的意思是: 对于丢弃io缓存区的数据。
使用说明:
1. 丢弃过程中遇到指定字符,那就停止丢弃,并且会丢弃遇到的字符。
2. 丢弃过程中丢弃的字符超过count指定的字符数量,那么就停止,就是最多丢弃count个字符
3. 丢弃过程中遇到文件结束符EOF,结束丢弃
常用场景:
我们使用count指定丢弃字符的数量,但是我们平时并不知道丢弃多少个字符,或者平时我们需要丢弃所有的数据,但是我们不知道具体有多少个数据需要释放。所以需要使用一个模版。
cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
1. numeric_limits<streamsize>::max(), -- 是一个模版的使用,表示缓存区的最大值。(最大数量)
2. 上面的意思就是,丢弃所有的缓存区数据,遇到换行符'\n',就结束输入。
3. 为什么是换行符'\n'?
因为我们使用的时候是以cin为例,cin是以'\n'结束的。所以遇到'\n'就是所有数据的最后,也就将数据全都丢弃了。