c++ - 控制台程序如何实现tab键自动补全?
PHPz
PHPz 2017-04-17 13:15:55
[C++讨论组]

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

PHPz
PHPz

学习是最好的投资!

全部回复(2)
高洛峰

GNU Readline Library - Programming with GNU Readline

迷茫

以前想过这个问题:
用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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号