2012-04-18 25 views
1

我的程序從網絡上讀取一些文本數據,如: Hello \033[1;34mworld\033[0m and bla bla bla!!!\n"。 當程序使用prinf輸出這個字符串時,單詞「world」是藍色的。但是當我使用wprintw或addch使用ncurses接口時,我看到帶有轉義序列的原始字符串。 這是否意味着printf處理轉義序列或不? 用ncurses處理轉義序列的最佳方式是什麼?使用ncurses處理轉義序列? printf處理轉義序列嗎?

+0

http://stackoverflow.com/問題/ 4373690/ansi-colors-in-c-and-ncurses – 2015-10-19 08:51:00

回答

2

不,您的終端處理轉義序列。你所看到的現象來自於ncurses的全部目的是跟蹤預期的終端內容並能夠重新繪製它,並且作爲這樣做的一部分它剝離了任何轉義序列。它可能會提供解釋他們的替代功能,並將它們應用到它自己的終端應包含的圖像,但否則您將不得不自己做這項工作...

+0

謝謝! 那麼,它是否正確,我有兩種方法: 1.使用替代功能 2.在自己的程序中處理 – van 2012-04-18 15:40:20

+0

您可以更詳細地解釋第一個選擇。我應該修補ncurses庫還是有一些鉤子?如果我使用第二種方式,我應該從遠程端檢查TERM環境變量,它將數據發送給我,還是應該使用另一種方式來確定遠程端的終端類型。當我確定終端類型時,我想我應該使用terminfo數據庫來闡明如何解釋轉義序列,它是否正確? – van 2012-04-18 16:02:59

+0

你絕對不應該修補ncurses。如果它沒有接受帶有顏色轉義的字符串的函數,則需要編寫代碼以使用顏色轉義處理字符串,並將其轉換爲一系列ncurses調用。 – 2012-04-18 16:28:48