C++: 这里输出为什么会这样

[复制链接]
查看11 | 回复2 | 2013-6-1 17:00:14 | 显示全部楼层 |阅读模式
怎么说呢……在windows操作系统下用ctrl+z可以结束程序,因为相当于输入ctrl+z就相当于输入结束 就是说文件中所谓的EOF……但有一定的要求,就是ctrl+Z要放在行首,因为如果输入缓冲区中有可读的数据系统不会检测Ctrl+Z,对于Ctrl+Z我在书上,网上看到的解释都是这样:Ctrl+Z产生的不是一个普通的ASCII码值,也就是说它产生的不是一个字符,所以不会跟其它从键盘上输入的字符一样能够存放在输入缓冲区。这个意思就是按下回车后系统会先检测Ctrl+Z如果第一个就是Ctrl+Z就会结束,而第一个遇到能读的数据的话,系统就是读输入缓冲区里的数据,而不会检测Ctrl+Z了。也就是说Ctrl+Z在行首才会生效。 换句话说只要系统检测到...
回复

使用道具 举报

千问 | 2013-6-1 17:00:14 | 显示全部楼层
从键盘上输入abcd^z 加 回车之后在Windows系统上是这样处理的:由于回车的作用,前面的 abcd 等字符被送到输入 缓冲区(注意:^z不会产生字符,所以更不会存储到输入缓冲区,缓冲区中没有 ^z 的存在)。这时,cin.get() 检测 到输入缓冲区中已经有数据存在(因此不再检查是否有 ^z 的输入),于是从缓冲中读取相应的数据。如果都读取完了,则...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行