2014-01-28 51 views
-4

如何獲取C++中特定座標處的字符? 是否可以使用gotoxy()作爲座標,然後使用某個函數讀取字符?在C++中獲取給定座標處的字符

+0

你只是試圖從屏幕上給定的點讀取字符,而不管文本託管在哪個應用程序中?展開你的問題,讓我們知道你想要做什麼。 – steveg89

+0

如果你只想輸入字符串中的特定字符:'std :: string line; std :: getline(std :: cin,line); std :: cout << line [pos];'... – LihO

+0

我們不知道你到底想要做什麼。我們不知道問題的背景,也沒有向我們展示您的任何嘗試或至少某些現有代碼在需要的地方... – LihO

回答

1

首先,標準C++沒有顯示器的概念。顯示可以是光柵或光線追蹤或其他任何東西。

存在使用該屏幕的控制檯程序和窗口化應用程序。所以,我們需要更多關於您的平臺的信息。

當一個程序「打印」到屏幕上時,字符會被轉換成使用字體的位圖並存儲在圖形內存中。圖形內存沒有字符或形狀的概念,只是普通的舊點。

此外,根據像素大小,像素密度和像素深度(值/顏色),顯示屏上的座標也會發生變化。例如,字符位圖可能是綠色或藍色或更大。

因此,要檢索顯示內存中給定點上的字符,您必須確定點的位置(是否在字體位圖中),然後嘗試使用某種OCR來確定字符,字體和音高(字體高度)。

所以,可能有一些功能來做到這一點。搜索網頁。任何標準C++庫都沒有。

+0

如果我在圖形模式下工作,我可以製作角色圖像並將其與屏幕上的角色進行比較?雖然我想要做的事情必須在textmode中完成,但它可能在圖形模式atleast嗎? –

+0

閱讀光學字符識別(OCR)。你所問的可能比你想象的更難。您應該能夠從顯示內存中檢索位圖並將其與另一個{font}位圖進行比較。給定一個定點ASCII字符集,這是128位圖你必須與之比較;或者至少是角色的位圖。請記住,如果一個或多個像素不合適,它將不會完全相等。 –

+0

此外,斜體,加下劃線,刪除和粗體的位圖與普通字符的位圖不匹配。 –

0

Curses是你在找什麼。

+0

Can Curses圖書館可以告訴你在終端的某個位置上的字母是什麼?我的理解是Curses只是一個輸出包。 –