2012-02-24 152 views
3

有沒有什麼方法可以讓我看到什麼角色佔據了一定的座標。假設我有以下輸出:從某些座標讀取?

Hello World ! 

我希望能夠看到y行上的x字符。喜歡的東西:

readCoordinates(0,3); 

該函數返回「L」,因爲第4個字符(因爲我開始從0開始計數)從1號線是「L」。我可以用已打印的字符串在C++中進行這種類型的讀數嗎?

回答

1

您可能會考慮定義您自己的自定義打印功能,該功能會將您輸出到控制檯的所有內容都記錄在vector中。這樣,您可以輕鬆地從控制檯抓取角色或字符串。

但是,如果您要輸出數千行,它可能會佔用大量內存。

0

您可以從打印的字符串中進行此操作,但在打印後,它只是屏幕上的像素或打印機上的墨水。所以,答案是否定的,除非你有例如一個視覺系統環顧四周,看看它的印刷位置,識別字母和線條,並找出座標。

0

「我可以用已打印的字符串在C++中進行這種類型的讀數嗎?」

好的方法是將程序的輸出存儲在內存中,以便函數readCoordinates可以訪問O(1)中的隨機字符。我一定會使用std::vector<std::string> outputBuffer,這將允許你這樣的事情:outputBuffer[0][3]

例子:

#include <iostream> 
#include <vector> 
#include <string> 

std::vector<std::string> outputBuffer; 

char readCoordinates(int line, int character) 
{ 
    if (line < outputBuffer.size() && character < outputBuffer[line].size()) 
     return outputBuffer[line][character]; 
    return 0; 
} 

int main() 
{ 
    std::string myOutput("Hello World !"); 
    outputBuffer.push_back(myOutput); 
    std::cout << myOutput << std::endl; 

    if (char c = readCoordinates(0, 3)) 
     std::cout << c << std::endl; 
} 

輸出:

Hello World ! 
l 
+0

如果在OP給出'readCoordinates(1,3);由他實際上是從字符串中的第1個字符意味着第三個字符'? – Mahesh 2012-02-24 19:08:49

+0

@Mahesh:他寫道「這個函數應該返回'l',因爲第一行的第四個字符(因爲我從0開始計數)是'l'。」 – LihO 2012-02-24 19:10:37

+0

我沒有說你在做什麼是錯的。但是你正在做的是不可行的輸入'readCoordinates(1,3);'並且導致UB。 – Mahesh 2012-02-24 19:13:01