>  Q&A  >  본문

c++ - 控制台程序如何实现tab键自动补全?

我在实现一个类似cmd的程序,程序内置一些命令,通过tab键自动补全命令.
但是控制台没有自己的窗口过程函数,无法处理按键消息,setwindowshook也对控制台程序无效.
虽然普通的getchar可以判断是否是tab,但是命令是以行为单位的,还有backspace退格等问题,所以请教大家有没有好的方法

PHPzPHPz2763일 전809

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 13:17:55

    GNU Readline Library - Programming with GNU Readline

    회신하다
    0
  • 迷茫

    迷茫2017-04-17 13:17:55

    以前想过这个问题:
    用getchar可以。ch=getchar(),每次输入就判断下ch的值。
    如果backspace转义字符'\b',直接输出就可以覆盖了。
    如果是TAB键的补全T,实现将你要补全的存在数组里,然后去匹配。具体形式有
    1、在当前光标的下一行输出一个可匹配的字符,设定要匹配就输入Enter键之类的,否则就不管他,这里需要获取并保存当前光标位置,然后跳到下一行,显示完提示字符串后也要删除。blabla。。
    2、按TAB键直接输出匹配的串,要保存原来的点,如果用户按'esc'就返回原来的字符串,记录匹配数目,输出'\b'就可以。如果继续按TAB则输出当前,输出匹配的下一个。

    有几个函数提供参考:
    getch() // conio.h
    输入的字符不会显示在屏幕上,类似linux输入密码的。
    ssprintf()
    修改字符
    获取控制台光标位置等等。。。。

    我以前收藏的文章,"如何先cmd输入密码显示*号 "
    http://www.cnblogs.com/jiangkun86/archive/2011/09/19/2181910.html

    회신하다
    0
  • 취소회신하다