在执行程序的时候,我们经常会需要从键盘输入数据,但是难免会输入有误需要使用退格键删除,但默认情况下退格键也会被回显到屏幕上,无法实现我们想要的删除功能。解决办法如下 :
方法一 :
在程序中添加 system("stty erase ^H"); 语句, 可以使得退格键不显示
方法二 :
#include
struct termios term;
if ( tcgetattr(STDIN_FILENO, &term;) == -1 )
{
cout << "tcgetattr error : " << strerror(errno) << endl;
return;
}
/*
* term.c_lflag &= ~ICANON;
* term.c_lflag |= ICANON;
* term.c_cc 字段为要设置的具体特殊输入字符,如c_cc[VERASE]代表退格键
* term.c_cc[VERASE] = '\b'; 将退格键设置为 '\b'
* VERASE代表向前擦除一个字符,VINTR代表发送ctrl+c中断信号, ctrl+c 的ASCII码为3
* 例如 :term.c_ccVINTR = '\t'; 将tab键设置为发送中断信号的功能, 取代了ctrl+c
* tcsetattr函数中,第二个参数 :TCSAFLUSH - 发送了所有输出后才生效,所有未读取的数据删除
* TCSANRAIN - 立即生效, TCSADRAIN - 发送了所有输出后更改生效
*/
term.c_cc[VERASE] = '\b'; /* 设置'\b' 为退格键的ASCII码*/
if ( tcsetattr(STDIN_FILENO, TCSANOW, &term) == -1 )
{
cout << "tcsetattr error : " << strerror(errno) << endl;
}
阅读(716) | 评论(0) | 转发(0) |