如何从stdout控制台光标指向的位置读取当前字符

时间:2019-03-05 02:18:11

标签: c++ stdout

我正在编写仅在控制台的光标正在移动的代码,而不必是因为键盘输入。 我需要一种简单的方法/功能来从stdout光标当前指向的内容读取当前char。 有什么建议吗?

(Windows 10,通过VS 2017的Win32应用程序)

2 个答案:

答案 0 :(得分:0)

AFAIK没有便携式的方法。

在Windows上,ReadConsoleOutputCharacter。要找出光标位置,请调用GetConsoleScreenBufferInfo

在Linux上,<curses.h>中的mvinch将读取字符。要找出要阅读的地方,请getyx

在其他平台上则有所不同。

答案 1 :(得分:0)

最终成功。 谁也需要此答案的答案:

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;

}

此函数将返回控制台光标当前指向的字符