【发布时间】:2016-08-11 15:34:57
【问题描述】:
我是 C++ 新手,对这个问题感到有些困惑。我使用 Mac OS X 和命令“g++ -std=c++11”来编译代码。
可能是这个问题太宽泛了,我不知道,但是如果有人可以用下面的例子解释一下吗?
int temp;
while (cin >> temp) {
cout << temp << endl;
}
当我输入时
1 2 3<ENTER>
打印出来
1
2
3
如我所料,按下
<CTRL+D>
退出。
但是如果我输入
1 2 3<CTRL+D>
打印出来
1D
2
跟着我输入的字符“3”,然后我按下
<ENTER>
将打印最后一个字符“3”。那我应该按
<CTRL+D>
再次退出。
此外,还有一个类似的例子:
vector<int> list; int temp;
while (cin >> temp) {
list.push_back(temp);
}
for (auto e : list) {
cout << e << endl;
}
当我输入时
1 2 3<ENTER><CTRL+D>
打印出来
1D
2
3
所以我的问题是:
这三种情况发生了什么然后我按
<CTRL+D>
和
<ENTER>
?
为什么在第二种和第三种情况下都有一个“D”字符?以及如何防止它发生?
【问题讨论】:
-
你确定你没有正确按下
CTRL+D,也许你也按下了D?再试一次,看看行为是否重复! -
@BiagioFesta 这不可能是真的,因为列表是整数。他怎么能推“D”?
-
"D" 不是您的程序打印的字符(它不能,它只打印数字)。这是你的终端驱动程序打印的东西。
-
@n.m.此帖子与所述帖子不重复。
-
@LiranFunaro 我不同意,但您始终可以使用重新打开按钮。