我永远都不记得我是怎么做到的,因为我很少想到这一点.但是在C或C++中,从标准输入中读取字符的最佳方法是不等待换行符(按下回车).

理想情况下,它也不会将输入字符 echo 到屏幕上.我只想在不影响控制台屏幕的情况下捕捉击键.

推荐答案

在纯C++中,这是不可能的,因为它太依赖于可以与stdin连接的终端(它们通常是行缓冲的).但是,您可以使用一个库:

  1. Windows编译器提供的CONIO.使用_getch()函数可以为您提供一个字符,而无需等待Enter键.我不是一个频繁的Windows开发人员,但我见过我的同学只包含<conio.h>并使用它.在维基百科上可以看到conio.h个.它列出了getch(),它在Visual C++中被声明为已弃用.

  2. Linux可用的诅咒.兼容的curses实现也可用于Windows.它还具有getch()功能.(请try 使用man getch查看其手册页).在维基百科上可以看到Curses个.

如果您的目标是跨平台兼容,我建议您使用诅咒.也就是说,我相信有一些函数可以用来关闭行缓冲(我相信这叫做"原始模式",而不是"煮熟模式"--查看man stty).如果我没记错的话,诅咒会以一种便携的方式为你处理这件事.

C++相关问答推荐

如何从C中的公钥字符串创建EVP_PKEY

C指针地址和转换

InetPton()函数无效的IP地址

在使用GTK 4 Columnview列表模型时,如何为多列添加排序函数.C编码,Linux/GNOME环境

C:scanf(%d&q;,...)输入只有一个减号

C编译器是否遵循restrict的正式定义?

将 struct 变量赋给自身(通过指针取消引用)是否定义了行为?

为什么删除CAP_DAC_OVERRIDE后创建文件失败?

在c++中使用堆栈的有效括号

Sizeof(&Q;字符串&Q;)的正确输出是什么?

在Rust和C之间使用ffi时如何通过 struct 中的[U8;1]成员传递指针

在txt文件中找到指定的字符串,并从数字中减go 相同的值

在C语言中,指针指向一个数组

Go和C中的数据 struct 对齐差异

如果格式字符串的内存与printf的一个参数共享,会发生什么情况?

在运行时判断C/C++指针是否指向只读内存(在Linux操作系统中)

在吉陀罗中,_2_1_和CONCAT11是什么意思?

一元运算符

在C中定义函数指针?

使用共享变量同步多线程 C 中的函数