C++實現tab補全(Windows限定)
如何實現tab補全(Windows)
什麼是tab補全?
Windows的cmd可以通過dir
指令檢視當前目錄,然後可以嘗試點一下tab,發現會自動補全為當前目錄下的檔名。
那麼問題來了
C++自帶函式庫無法實現tab補全,因而如果你希望設定一些指令,讓使用者輸入指令的話,要輸入全部。因此要實現tab補全
tab補全需要實現的
開啟cmd,然後可以親手試一下…(本篇可能很長,可以用目錄跳過)
原本目錄裡有這些東西
輸入一個d後按tab,可以發現它利用關鍵字d跳過了.android等直接來到了Desktop
再次按下,發現關鍵字不是Desktop而是d,來到了Documents
(無圖)輸入a,再退格,發現關鍵字不再是d,如果有研究的話,發現關鍵字來到了Documents
這說明了tab補全的幾個內容:
- 通過當前關鍵字搜尋一些字串
- 搜尋完後不是立刻改變關鍵字,而是按下tab以外的鍵後
然後就是實現程式碼了
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<conio.h>
#include<cstring>
using namespace std;
/*int&const*/
string command;
/*tab*/
struct tab_key
{
string s;
}keyword[101];
string lastfind;int laststop;
string finding;
int totkey;
void add_key(string a);
void Init_tabing();
string tabing();
void getcom(string *s);
/*------*/
void Init_tabing()
{
keyword[1].s="create ";
keyword[2].s="exit ";
//樣例關鍵字
for(totkey=1;totkey<=100;++totkey)//統計關鍵字個數
{
if(keyword[totkey].s.empty())
{
--totkey;
break;
}
}
}
string tabing()
{
/*
string finding;
string lastfind;
*/
string error="error";
int i;
if(finding==lastfind)
{
i=laststop;
}
else i=1;
for(;i<=totkey;++i)
{
if(keyword[i].s.find(finding)<=100&&keyword[i].s.find(finding)>=0)
{
laststop=i+1;
lastfind=finding;
return keyword[i].s;
}
}
return error;
}
/*By:CSDN The_Dark_Archon*/
string getcom()
{
bool reset=1;
string output;
char tmp;
while(tmp!=13)
{
if(reset==1)
{
system("cls");
reset=0;
printf("E:\\Input>");
cout<<output;
}
else cout<<tmp;
tmp=getch();
if(tmp==9)
{
string tt=tabing();
if(tt!="error")
{
output=tt;
output.erase(output.end()-1);
}
reset=1;
}
else if(tmp==8)
{
if(output.empty()==false) output.erase(output.end()-1);
reset=1;
}
else
{
output+=tmp;
finding=output;
}
}
return output;
}
int main()
{
Init_tabing();
command=getcom();
cout<<"\nRunning "<<command<<endl;
return 0;
}
結果是成功實現了tab補全,當然和cmd有點差距,如按退格等會一閃一閃的,這個更新的cls有關,但是出了一閃一閃之外也沒有什麼Bug了。
這個模板112行lol
相關文章
- Python tab 命令補全,以及 vim 補全Python
- python-tab補全模組Python
- python之 自動補全 tabPython
- 透過tab鍵實現命令補齊 (轉)
- mac git命令按tab鍵自動補全MacGit
- 解決Kali Linux XFCE桌面Tab無法補全Linux
- Linux設定python自動tab自動補全LinuxPython
- 如何在vim中使用tab進行python程式碼補全Python
- C/C++ Qt Tree與Tab元件實現分頁選單C++QT元件
- CentOS7無法使用Tab鍵補全命令的解決方法CentOS
- C++ Qt開發:Tab與Tree元件實現分頁選單C++QT元件
- 新手必學的使用命令列實現tab鍵自動補全功能命令列
- 微信小程式自定義tab,多層tab巢狀實現微信小程式巢狀
- Python tab鍵自動補齊Python
- C++之const限定符C++
- 利用jQuery實現Tab選項卡jQuery
- 用純css實現Tab切換CSS
- 用python實現的可以自動補全的字首樹Python
- 【實驗】使用ftp方法下載Windows版本Oracle 10.2.0.3補丁全記錄FTPWindowsOracle
- c++筆記_const限定符C++筆記
- 用CSS實現Tab頁切換效果CSS
- 純CSS實現Tab欄的切換CSS
- 純css實現tab選項卡效果CSS
- jQuery如何實現tab選項卡效果jQuery
- 安卓仿微信Tab頁用Fragment實現安卓Fragment
- HarmonyOS NEXT應用開發之Tab元件實現增刪Tab標籤元件
- javascript實現tab切換的四種方法JavaScript
- Vue路由+Tab元件實現多頁籤功能Vue路由元件
- C++ concurrency::task實現非同步程式設計(WindowsC++非同步程式設計Windows
- Mac環境下Sublime 3 配置 Anaconda 實現python自動補全MacPython
- [單篇] PHP 知識補全 —— 生成器 (generator)和協程的實現PHP
- Redis 實戰 —— 08. 實現自動補全、分散式鎖和計數訊號量Redis分散式
- jquery 自動補全jQuery
- JavaScript 重點補全JavaScript
- Flutter仿頭條頂部tab切換實現Flutter
- html兩種方法來實現tab切換效果HTML
- MVVM框架下實現左右滑動切換tabMVVM框架
- 微信小程式的tab選項卡的實現微信小程式