Читать из определенных координат? - PullRequest
3 голосов
/ 24 февраля 2012

Есть ли способ, чтобы я мог видеть, какой персонаж занимает определенную координату. Допустим, у меня есть следующий вывод:

Hello World !

Я хочу видеть символ x в строке y. Что-то вроде:

readCoordinates(0,3);

Эта функция должна возвращать 'l', потому что 4-й символ (потому что я начал считать с 0) из 1-й строки - это 'l'. Могу ли я сделать этот тип чтения в C ++ из уже напечатанной строки?

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

Возможно, вы захотите определить собственную функцию печати, которая регистрирует vector все, что вы уже вывели на консоль. Таким образом, вы можете легко получить символ или строку из консоли.

Однако это может занять много памяти, если вы выводите тысячи строк.

0 голосов
/ 24 февраля 2012

"Могу ли я сделать этот тип чтения в 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 голосов
/ 24 февраля 2012

Вы можете сделать это из напечатанной строки, но после печати это всего лишь пиксели на экране или чернила на принтере.Таким образом, ответ будет отрицательным, если у вас нет, например, системы зрения, чтобы осмотреться и посмотреть, где она была напечатана, распознать буквы и линии и определить координаты.

...