注册 登录
编程论坛 VC++/MFC

关于cin.ingore()的问题

发布于 2010-11-11 18:04, 969 次点击
cout << "Enter the check amount (0.00 to 999.99): ";
   cin >> dollars;
   cin.ignore();
   cin >> cents;
我想请问一下如果我输入123.45,dollars、cents是多少了,为什么了?cin.ignore();
是一个什么作用了?谢谢了
5 回复
#2
shafeilong2010-11-11 20:43
cin.ignore(a,ch)方法是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。比如可以这么用:cin.ignore(1024,'\n'),通常把第一个参数设置得足够大,这样实际上总是只有第二个参数'\n'起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。

你不给参数,则默认参数为cin.ignore(1,EOF),即把EOF前的1个字符清掉,没有遇到EOF就清掉一个字符然后结束,就是这样啊,所以你每次都少一个字符.
百度转的
虽然我也不知道啥意思
#3
2010-11-12 15:00
回复 2楼 shafeilong
还是要谢谢你的关注了,这些我在百度上也看见我了,不过也是不太清楚了,所以希望有人能解答一下了
#4
jianghong_022010-11-12 19:46
cin.ignore(x,'c')格式…………
x是你设置的一个上限数,c字符和X的用法差不多。满足任一条件就终止语句
按你上面的顺序看。
cin >> dollars;是没有内容的,因为它是建立在缓冲区中的

 cin.ignore();
它的功能就是用来清除以回车结束的输入缓冲区的内容
cin >> cents;是123.45,
#5
2010-11-12 23:49
回复 4楼 jianghong_02
不知道你有没有在自己的电脑上实现过了,在我的电脑上实现的话dollars=123,而cents=45,不知道为什么了?
#6
jianghong_022010-11-13 08:19
你把你写的程序发出来,让我看看…………这要说不清楚
1