有沒有什麼方法可以讓我看到什麼角色佔據了一定的座標。假設我有以下輸出:從某些座標讀取?
Hello World !
我希望能夠看到y行上的x字符。喜歡的東西:
readCoordinates(0,3);
該函數返回「L」,因爲第4個字符(因爲我開始從0開始計數)從1號線是「L」。我可以用已打印的字符串在C++中進行這種類型的讀數嗎?
有沒有什麼方法可以讓我看到什麼角色佔據了一定的座標。假設我有以下輸出:從某些座標讀取?
Hello World !
我希望能夠看到y行上的x字符。喜歡的東西:
readCoordinates(0,3);
該函數返回「L」,因爲第4個字符(因爲我開始從0開始計數)從1號線是「L」。我可以用已打印的字符串在C++中進行這種類型的讀數嗎?
您可能會考慮定義您自己的自定義打印功能,該功能會將您輸出到控制檯的所有內容都記錄在vector
中。這樣,您可以輕鬆地從控制檯抓取角色或字符串。
但是,如果您要輸出數千行,它可能會佔用大量內存。
您可以從打印的字符串中進行此操作,但在打印後,它只是屏幕上的像素或打印機上的墨水。所以,答案是否定的,除非你有例如一個視覺系統環顧四周,看看它的印刷位置,識別字母和線條,並找出座標。
「我可以用已打印的字符串在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
如果在OP給出'readCoordinates(1,3);由他實際上是從字符串中的第1個字符意味着第三個字符'? – Mahesh 2012-02-24 19:08:49
@Mahesh:他寫道「這個函數應該返回'l',因爲第一行的第四個字符(因爲我從0開始計數)是'l'。」 – LihO 2012-02-24 19:10:37
我沒有說你在做什麼是錯的。但是你正在做的是不可行的輸入'readCoordinates(1,3);'並且導致UB。 – Mahesh 2012-02-24 19:13:01