网上搜索到这段话,但不知道具体如何重新连接tty:
在无效输入后可以恢复状态:未能根据预期类型解析输入,只需设置 std:: ios_base::failbit ,这可以是 clear() . 由于不会删除导致问题的字符,因此您可能需要摆脱它(例如使用 ignore() )或以不同方式对数据进行parae .
虽然EOF也只是一个标志( std::ios_base::eofbit )清除它一般不会从已经到达流的末尾恢复 . 特定流可以具有继续读取的方式,但是在流指示符结束之后控制台很可能被断开(例如,Ctrl-D或Ctrl-Z) . 根据系统,可以创建到控制台的新连接,例如,通过打开文件流到 /dev/tty .
如果您确实想使用控制字符来指示特殊处理,请使用 tcgetattr() 和 tcsetattr() 将流设置为非规范模式 . 完成此操作后,可以看到输入的所有字符,并且可以在自定义流缓冲区中进行处理 . 我不知道如何在其他系统上做类似的事情 .
【 在 ilovecpp 的大作中提到: 】
: linux下eof就是eof,你再怎么clear也不可能从cin读到数据了。
--
FROM 61.149.156.*