永发信息网

while (cin && cin.get() != '\n') 这条语句怎么解释? 我不明白cin 和 cin.get() 或者给个链接

答案:4  悬赏:70  手机版
解决时间 2021-03-17 17:20
  • 提问者网友:富士山上尢
  • 2021-03-17 00:00
while (cin && cin.get() != '\n') 这条语句怎么解释? 我不明白cin 和 cin.get() 或者给个链接
最佳答案
  • 五星知识达人网友:执傲
  • 2021-03-17 00:24
你好!

如果从你贴的这一句代码来看,cin应该是你定义的一个变量。
这个循环语句,只要满足括号中的条件(值为cin并且cin.get()的值不等于回车),此循环就会一直执行下去,除非不满足括号中的条件,循环就结束。
你的代码贴的不全,只能这么解释了,
解释不足,请见谅哦!

希望对你有所帮助,望采纳。
全部回答
  • 1楼网友:思契十里
  • 2021-03-17 01:35
int main() { int o[10]; int i = 0; while (cin>>o[i] && cin.get() != '\n') { cout << o[i]; } system("Pause"); return 0; } 执行这个程序, 输入“1 2 3 4 8 6”再敲回车,我们得到输出“12348” 6似乎被吃掉了 再输入“1 2 3 4 8 6 “(主要最后多了个空格)再敲回车,我们得到输出“123486” 这样我解释一下原因 :当我们使用cin>>o[i] 时,>> 算符把 ' ','\n', '\t' 都当成间隔符,都无视掉了,而我们用cin.get() 时,不会无视 ' ','\n', '\t' 这样,在执行cin>>o[i] && cin.get() != '\n'时,我们把1赋值到o[i],之后的一个空格被cin.get()吃掉,但是最后的时候我们cin.get()真的得到了'\n' ,循环体不执行 但是赋值语句还是有的,我们再在循环语句后加入cout << o[i]; 这样执行这个程序, 输入“1 2 3 4 8 6”再敲回车,我们得到输出“123486” 问题解决! //我自己在写作业时遇到了些问题,解决时想明白的。
  • 2楼网友:行路难
  • 2021-03-17 01:22
看这样子 cin 应该是一个类的对象,先解释下 && 的特殊用法: && 双目运算符,当且两边都为真时,其结果为真,有一点要特别注意,当左边表达式为假时则不计算右边表达式(整个表达式已可以确定为假),例: int a=0,b=1; if( a==1 && b=2); printf("%d,%d\n",a,b); 这里因为a == 1为假,则不会计算b=2,结果是:0,1 所以你给的这里是判断cin是否存在,或者说如果cin是空,那将不执行cin的get成员函数。
  • 3楼网友:举杯邀酒敬孤独
  • 2021-03-17 01:13
如果从你贴的这一句代码来看,cin应该是你定义的一个变量。 这个循环语句,只要满足括号中的条件(值为cin并且cin.get()的值不等于回车),此循环就会一直执行下去,除非不满足括号中的条件,循环就结束。 你的代码贴的不全,只能这么解释了, 解释不足,请见谅哦!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯