首页 > 代码库 > c++cin.ignore()

c++cin.ignore()

c++ 中cin.ignore(100,‘\n‘);
的作用是清除输入流中多余的字符请问这句话是什么意思?
可以举个例子吗?


提问者采纳


这个其实就是忽略cin中的前100个字符,或是‘\n‘之前的字符
(因为cin会屏蔽‘\n‘,所以后一个条件不会起作用,可以改成‘#‘试试)。
如: 
string str;  
cin.ignore(5, ‘#‘); 
cin >> str;  
cout << str << endl;


如果输入 "12345678",
回车,那么输出就是"678",


因为字符中没有包含‘#‘,就是忽略前5个。
如果输入 "123#45678",


回车,那么输出就是"45678",
忽略‘#‘之前的。


当然,如果总共输入的数据少于5,且没有"#",那就全忽略了。


追问  谢谢,不过,清除输入流中多余的字符, 这句话是什么意思呢?


回答


你可以吧cin.ignore(x, y)中的参数看成两个条件,
x条件表示忽略x个,
y条件就表示忽略y之前的字符,
y条件优先级高于x。


平常,我们单独用 cin>>str 的时候,流缓冲区里面还没有字符,那么执行这句之后就等待用户输入。


但是用了 cin.ignore之后,从这句就开始往流里面输入了,


只不过输入到流里面的数据会按参数的要求去清除那些,到后面这句 cin >> str的时候,
流里面存在的是按条件清除之后的的数据,直接输出给str了。


提问者评价   谢谢你的耐心解答,好详细呀