我正在编写仅在控制台的光标正在移动的代码,而不必是因为键盘输入。 我需要一种简单的方法/功能来从stdout光标当前指向的内容读取当前char。 有什么建议吗?
(Windows 10,通过VS 2017的Win32应用程序)
答案 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;
}
此函数将返回控制台光标当前指向的字符