windows 控制台下 无法获取完整的回车键值
问题描述:
收集的网友分析:
http://bbs.csdn.net/topics/370084904
因为C语言和UNIX的开发者是同事……
C语言里统一用的\n表示另起一行。微软的DOS受到了当时8位系统主流OS CP/M的影响,使用\r\n表示另起一行。Mac用\r表示另起一行。
C标准库隐藏了平台的不一致性,所有标准输入输出(包括标准文件)操作时都会自动进行转换,保证语言内总是用\n。像getchar()、fscanf()、printf()等等都是这样的。
getch()并不是C标准库的函数,而是比较低级的控制台函数,所以不会进行转换。
你无法通过cin输入回车符(ASCII 13),因为C++标准库和C一样,通过键盘中断服务读取的\r\n会被自动转换为\n。