2014-03-03 47 views
0

我很想知道如何繪製/更新終端/控制檯的某個區域。有沒有跨平臺的庫可以這樣做?如何繪製到控制檯/終端的某個部分?

我想知道的原因是因爲我正在開發一個即時消息命令行應用程序,並且我很想知道如何將消息查看器(所有消息都去)更新到您寫入命令/文本的位置爲其他人聊天。顯然,如果我只是試圖獲得輸入並寫入cout,那麼用戶輸入的輸入和消息將被「干擾」(受干擾,我的意思是分成多行)。

我在考慮使用兩個流對象:一個存儲視圖(消息/服務器輸出)和一個存儲來自用戶的輸入,並且只需要時重繪。但是,這似乎效率低下,它需要我清除屏幕(在這種情況下,我不知道如何高效地以跨平臺方式清除屏幕)。

我也在考慮切換到Qt/wxWidgets,因爲它可能更容易製作GUI。

回答

2

使用ncurses庫以獨立於終端的方式編寫基於文本的用戶界面。

2

正如@Naruto建議的那樣,ncurses是一個很好的選擇。在更基本的層面,你也可以只使用ANSI轉義符來移動屏幕太周圍的光標:

例如,將光標定位在第5行,第23欄,您可以輸入這個

echo -n "\033[5;23H" 

還有更多的例子here

+0

我假設使用ANSI轉義碼比使用ncurses困難得多。 –

+0

這取決於你想要什麼。如果您只想在屏幕頂部和三或四個其他信息中放置日期和時間,ANSI代碼就可以。如果你想滾動窗口和複雜的屏幕管理ncurses更好 - 雖然我認爲你會發現ncurses具有相當陡峭的學習曲線。 –