一眼就能看懂的cin.ignore()函数详解

  看了很多网上的cin.ignore()函数的解析,发现万片一律,不知道是你抄我的还是我抄你的,还都没有注明转载,而且纯粹是教科书的死搬硬套。
  希望我的这篇博客可以帮到大家。
  首先,他的函数原型是这样的:
  

istream& ignore (streamsize n = 1, int delim = EOF);

  第一个参数n表示从输入到正式被赋值到变量的过程中,也就是在输入缓冲区中时,会从你输入开始向后面读取字符,每读一个。给自己维护的计数器加一,并和第二个参数比较,观察是否相等。若比较时没有相等,则舍弃这个字符(表示最终向变量赋值时不会把这个字符和这个字符之前的字符赋值给变量),例如:
  

cin.ignore(8,’a’);

  此时输入bcdaefg,在读取字符时,一个一个读,首先是’b’,跟第二个参数’a’不想等,舍弃,并给计数器加一,并将计数器和第一个参数比较。接着是’c’,’d’,当读到’a’时,与第二个参数比较,相等,舍弃这个字符,并不再执行后面的逻辑,将后面的所有输入字符都放在输入缓冲区等待被拿走(被赋值给变量)。
  如果输入bcdefghijkl,此时每读一个字符和第二个参数比较时,都不想等,计数器一直加一,知道与第一个参数比较时相等,则同样舍弃之前的字符,即从一开始输入的数据向后8个(第一个参数)字符均被舍弃,从第九个字符开始保留在输入缓冲区,等待被拿走。
  若如此使用:

cin.ignore();

  表示丢弃输入的第一个字符。可用来防止接收上次输入的回车符。
  

cin.ignore(1024.’\n’);

  第一个参数设置的足够大,表示将回车(包括回车)之前的数据全部清除,此举在保证回车符之前的数据被使用后,可以当作刷新输入缓冲区的方式使用。

你可能感兴趣的:(C++)