как прочитать текущий символ из курсора консоли - PullRequest
0 голосов
/ 05 марта 2019

Я пишу код, в котором движется только курсор консоли, а не обязательно из-за ввода с клавиатуры.Мне нужен простой способ / функция, чтобы прочитать текущий символ из того, на что в данный момент указывает курсор stdout.какие-либо предложения?

(Windows 10, приложение win32 через VS 2017)

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

наконец удалось.ответ для тех, кто также нуждался в этом:

char cursorCharRead()
{
    char buf[BUFSIZ];
    CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
    HANDLE hConsole= GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfo(hConsole, &csbiInfo);
    COORD pos = csbiInfo.dwCursorPosition; //set pos to current cursor location
    TCHAR strFromConsole[1];    //need space to only one char
    DWORD dwChars;
    ReadConsoleOutputCharacter(
    hConsole,
    strFromConsole, // Buffer where store symbols
    1, // Read 1 char to strFormConsole
    pos, // Read from current cursor position
    &dwChars); // How many symbols stored
char c = strFromConsole[0];
return c;

}

эта функция вернет символ, на который в данный момент указывает курсор консоли

0 голосов
/ 05 марта 2019

AFAIK. Переносного способа сделать это нет.

В Windows ReadConsoleOutputCharacter .Чтобы узнать положение курсора, вызовите GetConsoleScreenBufferInfo .

В Linux mvinch из <curses.h> будет читать символы.Чтобы узнать, где читать, getyx .

На других платформах это что-то другое.

...