linux文件结束符

父進程 2017-09-19 08:56:58
一个很简单的C++程序,让用户自己输入一串数字,然后计算总和

#include <iostream>
using namespace std;

int main(){
int count = 0;
int sum = 0;
cout << "Enter number: ";
while(cin >> count){
sum += count;
}
cout << "sum is " << sum <<endl;
}


运行结果如下:

在输入1 2 3之后并没有输出求和的结果,而是需要先按下enter键,然后再按ctrl+D组合键才会输出结果
linux系统的文件结束符是ctrl+D,这个我知道,但是为什么需要先按下enter键,然后再按ctrl+D组合键才会输出结果?
...全文
538 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevin_khb 2017-10-05
  • 打赏
  • 举报
回复
引用 7 楼 hjc132 的回复:
[quote=引用 2 楼 haibo_kang 的回复:] cin这个流是行缓冲,按回车是表示把你输入提交到缓冲区 按ctrl+D是表示EOF,表示你输入结束了
[/quote] 这个和cin的两种监测键盘方式,阻塞和非阻塞,以前在书上看过。。。 大概ctrl+d是非阻塞的,如果ctrl+d之前没回车,ctrl+d起不到eof的作用 很多也忘了,你看书吧
父進程 2017-09-27
  • 打赏
  • 举报
回复
引用 2 楼 haibo_kang 的回复:
cin这个流是行缓冲,按回车是表示把你输入提交到缓冲区
按ctrl+D是表示EOF,表示你输入结束了



父進程 2017-09-27
  • 打赏
  • 举报
回复
引用 2 楼 haibo_kang 的回复:
cin这个流是行缓冲,按回车是表示把你输入提交到缓冲区 按ctrl+D是表示EOF,表示你输入结束了
我的输入是:1 2 3 ctrl+d 4 然后再按enter,结果还是没有输出结果,而是要再按ctrl+d之后才会输入结果,不是说enter键是将输入提交到缓冲区吗?按理说我在4之前输入了ctrl+d,应该只计算1+2+3的值啊,为什么ctrl+d没有起作用
ForestDB 2017-09-26
  • 打赏
  • 举报
回复
其实不按回车也可以,需要按Ctrl-D两次。
似缘非缘 2017-09-26
  • 打赏
  • 举报
回复
回车后才把数据传给cin
engreal 2017-09-26
  • 打赏
  • 举报
回复
打断点,看看cin的返回值
kevin_khb 2017-09-25
  • 打赏
  • 举报
回复
cin这个流是行缓冲,按回车是表示把你输入提交到缓冲区 按ctrl+D是表示EOF,表示你输入结束了
赵4老师 2017-09-20
  • 打赏
  • 举报
回复
提醒:cin是开源的

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧