c++ - 控制台程序如何实现tab键自动补全?
PHPz
PHPz 2017-04-17 13:15:55
0
2
833

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

PHPz
PHPz

学习是最好的投资!

全員に返信(2)
小葫芦

GNU Readline Library - Programming with GNU Readline

いいねを押す +0
迷茫

以前想过这个问题:
用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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート