从特定坐标读取

Read from certain coordinates?

本文关键字:读取 坐标      更新时间:2023-10-16

有没有一种方法可以彻底查看哪个字符占据某个坐标。假设我有以下输出:

Hello World !

我想看到y线上的x字符。类似于:

readCoordinates(0,3);

这个函数应该返回"l",因为从第1行开始的第4个字符(因为我从0开始计数)是"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