ignorej就像他的名字,忽略,第一个参数是个数,第二个参数是结束符,就是说你一直输入的话,忽略掉前面若干字符,直到遇到结束符为止
像你这个代码,就是说忽略掉前4个,知道遇到回车为止
如果你输入abc,这时你会输入回车,满足了它的遇到结束符的条件,它就不再忽略了,这时你再输入就是a的值了
clear是清除错误标志
比如你要输入一个整数int型,但是你输入了一个字符,这时候cin流中就会置一个错误标志,你再输入其他数据都会受到影响,简单的理解,流错了,咋弄都白扯(典型的错误就是你输错之后,如果是循环输入的,后面都不提示你输入了,死循环)
clear就是清除这个标记,让你可以继续输入
补充一下吧:
ignore 这是针对cin的缓冲区而言的,第一个参数表示从当前读指针的位置跳过几个字符(如4个),第二个参数表示如果遇到分隔字符(如\n),ignore函数将返回,不再忽略,从\n字符后的字符都可以读取到。
void clear(
iostate _State=goodbit
);
clear 清除所有错误标志。并把流的状态位重新置为 _State | (rdbuf != 0 ? goodbit : badbit)
rdbuf 是缓冲区指针。