2013-08-29 57 views
4

我想爲背景程序編寫一個命令行shell,並且我可以輸入一些命令。我想添加一個像bash(或其他類似殼)的功能---'UP'鍵來獲取歷史輸入。我怎樣才能捕捉按下'UP'鍵?如何編寫命令行shell來捕獲'UP'鍵以獲取歷史輸入?

如果我只是使用std::getline(std::cin, line)我不能得到'UP'鍵或其他功能鍵,即。按Ctrl + w刪除輸入行的一個字。

+1

有一個 「函數getline庫」,這是一個C的功能,讓你編輯/記錄您的程序輸入的歷史記錄等。或者,你將不得不閱讀原始輸入和自己處理鍵盤輸入... –

+0

有一個[相關(雖然不同)的問題](http://stackoverflow.com/questions/18505947/how-to-make-command-歷史在控制檯應用程序/ 18506211#18506211)今天,這可能是有趣的。 – Hulk

+0

@MatsPetersson你的建議是非常有用的,它應該是一個答案,而不是一個共同點。我現在使用GNU readline庫。 http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html –

回答

1

使用kbhit()讓鍵盤的方向鍵

+0

它適用於所有編譯器嗎? [參見(http://www.cprogramming.com/fod/kbhit.html) – cpp

0

使用ncurses庫,看到sample program

#include<ncurses.h> 
#include<iostream> 

int main() 
{ 
    int ch; 
    initscr(); //initialize the ncurses data structures 

    keypad(stdscr,TRUE); //enable special keys capturing 

    ch=getch(); 

    if(ch==KEY_UP) 
     std::cout << "Key up pressed!" << std::endl; 
}