返回信息流用c++中一个很常见的语句while(cin>>str),这里str是string类型。在程序输入的时候,输入一部分数据后,输入Crtl+z无效,非得换行Ctrl+z,为什么呢?一直搞不清楚这个问题。
按说cin这个操作,碰到tab,空格和回车都会读入的啊,应该能够识别Ctrl+z。求解释。
这是一条镜像帖。来源:北邮人论坛 / cpp / #46649同步于 2010/11/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于cin的一个问题(轻pia)
moodyt
2010/11/22镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
vc6对这事情似乎有个bug
是vc6么?
【 在 moodyt (徒子不登) 的大作中提到: 】
: 用c++中一个很常见的语句while(cin>>str),这里str是string类型。在程序输入的时候,输入一部分数据后,输入Crtl+z无效,非得换行Ctrl+z,为什么呢?一直搞不清楚这个问题。
: 按说cin这个操作,碰到tab,空格和回车都会读入的啊,应该能够识别Ctrl+z。求解释。
【 在 renne 的大作中提到: 】
: vc6对这事情似乎有个bug
: 是vc6么?
: 【 在 moodyt (徒子不登) 的大作中提到: 】
: ...................
不是,是dev-cpp
总之……vc6要两次ctrl+z 2008只要一次……似乎是bug……
【 在 wks (cloverprince) 的大作中提到: 】
: 行缓冲。
: 和命令行有关。
【 在 renne 的大作中提到: 】
: 总之……vc6要两次ctrl+z 2008只要一次……似乎是bug……
: 【 在 wks (cloverprince) 的大作中提到: 】
: : 行缓冲。
: ...................
这和对cin的处理方式有关,应该不是bug吧
你贴的那个东西,我当时也看过,感觉不是那个的原因
Windows系统中一般采用阻塞式检查 Ctrl+Z、Unix/Linux系统下一般采用非阻塞式的检查 Ctrl+D。楼主是在Windows系统下,因此使用阻塞式的 Ctrl+Z 来标识流的结束。
这种阻塞式的方式有一个特点:只有按下回车之后才有可能检测在此之前是否有Ctrl+Z按下。还有一个特点就是:如果输入缓冲区中有可读的数据则不会检测Ctrl+Z(因为有要读的数据,还不能认为到了流的末尾)
按照这段话,阻塞式的话,应该是ctrl+z+回车才行
你不是说要先回车再ctrl+z么
【 在 moodyt (徒子不登) 的大作中提到: 】
: 这和对cin的处理方式有关,应该不是bug吧
不对……似乎这段话的意思是要回车+ctrl+z+回车吗
【 在 renne (歼灭天使 玲) 的大作中提到: 】
: 标 题: Re: 关于cin的一个问题(轻pia)
: 发信站: 北邮人论坛 (Mon Nov 22 19:28:23 2010), 站内
:
: 你贴的那个东西,我当时也看过,感觉不是那个的原因
:
: Windows系统中一般采用阻塞式检查 Ctrl+Z、Unix/Linux系统下一般采用非阻塞式的检查 Ctrl+D。楼主是在Windows系统下,因此使用阻塞式的 Ctrl+Z 来标识流的结束。
:
: 这种阻塞式的方式有一个特点:只有按下回车之后才有可能检测在此之前是否有Ctrl+Z按下。还有一个特点就是:如果输入缓冲区中有可读的数据则不会检测Ctrl+Z(因为有要读的数据,还不能认为到了流的末尾)
:
:
: 按照这段话,阻塞式的话,应该是ctrl+z+回车才行
: 你不是说要先回车再ctrl+z么
: 【 在 moodyt (徒子不登) 的大作中提到: 】
: : 这和对cin的处理方式有关,应该不是bug吧
:
:
: --
: 那些超越善与恶、生与死的所在 我都曾淡然地走过
: 无所幸,无所不幸 无所悲,亦无所喜 白与黑撕裂了我 天与地强暴了我
: 我已变得污秽不堪 从何处开始 又将在何处结束
: 我不属于任何地方 我从不曾行走过
: 只是 世界在旋转 在我所不知道的某个地方,只有世界在旋转……
: 那么 这样就可以了 因为世界无论何时 都是为我而转动着 所以……我没什么好哀伤的
:
:
: ※ 来源:·北邮人论坛 bbs.byr.cn·[FROM: 59.64.141.166]
【 在 renne 的大作中提到: 】
: 不对……似乎这段话的意思是要回车+ctrl+z+回车吗
: 【 在 renne (歼灭天使 玲) 的大作中提到: 】
: : 标 题: Re: 关于cin的一个问题(轻pia)
: ...................
恩 是啊 怎么感觉我又迷糊了。。