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了。


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









  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值