【发布时间】:2012-08-28 18:17:58
【问题描述】:
我对这两段代码的区别有疑问:
char buffer5[5];
cin.get(buffer5, 5);
cout << buffer5;
cin.get(buffer5, 5);
cout << buffer5;
和
char buffer4;
while (cin.get(buffer4))
{
cout << buffer4;
}
在第一段代码中,代码获取 5 个字符并将其放入 buffer5 中。然而,因为你按下了回车,在调用 get() 时不会将换行符放入流中,因此程序将终止并且不会再要求你输入另一轮 5 个字符。
在第二段代码中, cin.get() 等待输入流的输入,因此循环不只是终止(我认为)。假设我在输入流中输入了“Apple”。这会将 5 个字符放入输入流中,并且循环会将所有字符打印到输出中。但是,与第一段代码不同的是,它不会停止,即使在两次输入之后我也可以继续输入。
为什么我可以在第二段代码而不是第一段代码中连续输入字符序列到终端?
【问题讨论】:
-
get返回一个istream &,你永远不会导致循环条件为 false。尝试输入系统的 EOF 字符。 -
@chris:- 在我的评论下方还有一个框,称为
Your Answer.... -
@Anonymous,我个人认为答案可能比这多一点。
-
@chris,感谢您提供的信息
-
@chris,如果不是简单的答案,我今天的分数只有一半!说真的,如果这是对问题的真实答案,您应该将其发布。只有当它是推测时才会首选评论。