问个CSDN都不知道的问题,输入的字符是不是先进入键盘缓冲区,然后再进入cin所关联的流缓冲区?
本帖最后由 u011774561 于 2013-09-23 15:45:01 编辑 问个CSDN都不知道的问题,输入的字符是不是先进入键盘缓冲区,然后再进入cin所关联的流缓冲区?
之所以这么说,是因为我看到某书上这么写:
实际上,在内存中为每一个数据流开辟一个内存缓冲区,
用来存放流中的数据。
当用cout和插入运算符“<<”向显示器输出数据时,
先将这些数据送到程序中的输出缓冲区保存,
直到缓冲区满了或遇到endl,就将缓冲区中的全部数据送到显示器显示出来。
在输入时,从键盘输入的数据先放在键盘缓冲区中,
当按回车键时,键盘缓冲区中的数据输入到程序中的输入缓冲区,形成cin流,
然后用提取运算符“>>”从输入缓冲区中提取数据送给程序中的有关变量。
总之,流是与内存缓冲区相对应的,或者说,缓冲区中的数据就是流。
[解决办法]
对啊,说的没错,本来访问I/O设备就非常耗时,所以缓存起来,提高效率。
[解决办法]
键盘缓存区是在键盘上的,键盘里面有个控制芯片,外加一些Flash ,用来保存我们的原始按键信息,而流缓冲区是在内存中开辟的。
[解决办法]
对啊,说的没错,本来访问I/O设备就非常耗时,所以缓存起来,提高效率。
那就是说键盘缓冲区和流缓冲区不是一个区喽?
键盘缓存区是在键盘上的,键盘里面有个控制芯片,外加一些Flash ,用来保存我们的原始按键信息,而流缓冲区是在内存中开辟的。
那就是键盘的内存喽,或者说键盘的驱动程序开辟的内存,对不对。
可以这么理解,没错~
[解决办法]
的确是这样,但是LZ又不开发驱动,关心这个?