从某些坐标读取?

时间:2012-02-24 18:52:24

标签: c++ io console

有没有办法让我看到哪个角色占据某个坐标。假设我有以下输出:

Hello World !

我希望能够在y行看到x字符。类似的东西:

readCoordinates(0,3);

这个函数应该返回'l',因为第一行的第4个字符(因为我从0开始计数)是'l'。我可以从已经打印过的字符串中用C ++做这种类型的读数吗?

3 个答案:

答案 0 :(得分:1)

您可以考虑定义自己的自定义打印功能,该功能会记录vector您已输出到控制台的所有内容。这样,您可以轻松地从控制台中获取字符或字符串。

但是,如果输出数千行,可能会占用大量内存。

答案 1 :(得分:0)

您可以从打印的字符串执行此操作,但在打印后,它只是屏幕上的像素或打印机上的墨水。所以,答案是否定的,除非你有例如一个视觉系统,环顾四周,看看它的打印位置,识别字母和线条,并找出坐标。

答案 2 :(得分: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