zoukankan      html  css  js  c++  java
  • c++清除输入缓冲区之 sync() vs ignore()

    最近在写程序的时候总是不注意输入缓冲区内是否还有东西,导致出现了一些异常,调试了半天.所以来上一贴,学习注意,引以为戒!

    http://blog.chinaunix.net/uid-21254310-id-1828906.html

    sync()函数 和ignore()函数都是用于清除输入缓冲区的内容的.   

    #include<unistd.h>    void sync(void)                                                         清除输入缓冲区

    #include <iostream>     istream &ignore( streamsize num=1, int delim=EOF );    读入字符,直到已经读了num 个字符(默认为1)或是直到字符delim 被读入(默认为EOF).   其调用形式为cin.ignore(n,终止字符)

    由于程序运行时并不总是知道外部输入的进度,很难控制是不是全部清除输入缓冲区的内容。通常我们有可能只是希望放弃输入缓冲区中的一部分,而不是全部。比如清除掉当前行、或者清除掉行尾的换行符等等。但要是缓冲区中已经有了下一行的内容,这部分可能是我们想保留的。这个时候可以考虑用ignore函数代替(因为sync总是把全部都清掉)

      cin.ignore(numeric_limits::max(),’ ’);//清除当前行

      cin.ignore(numeric_limits::max()); //清除cin里所有内容

      numeric_limits::max()是climits头文件定义的流使用的最大值,你也可以用一个足够大的整数代替它。

      使用ignore显然能比sync()更精确控制缓冲区。还有ignore()这样用,可以清除一个字符。不过这个用的不多,对于清楚知道要弃置一个字符的情况,完全可以由程序做一次读操作,然后放弃读入内容来实现.

  • 相关阅读:
    [ext4]空间管理
    [ext4] 磁盘布局
    [ext4]磁盘布局
    [ext4]08 磁盘布局
    [ext4]07 磁盘布局
    [ext4]06 磁盘布局
    [ext4]05 磁盘布局
    jQuery之链式编程
    jQuery之排他思想
    jQuery之筛选方法
  • 原文地址:https://www.cnblogs.com/silentNight/p/5452814.html
Copyright © 2011-2022 走看看