📅  最后修改于: 2023-12-03 14:59:57.285000             🧑  作者: Mango
在CMD中获取键盘输入是一个常见的需求。实现这个功能需要用到Windows API中的GetStdHandle
函数以及ReadConsole
函数。
在Windows中,标准输入、标准输出和标准错误输出都有一个句柄,分别对应STD_INPUT_HANDLE
、STD_OUTPUT_HANDLE
和STD_ERROR_HANDLE
。我们需要获取标准输入的句柄,才能进行键盘输入的操作。
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
在获取到标准输入句柄之后,我们就可以使用ReadConsole
函数读取键盘输入了。ReadConsole
函数的参数包括句柄、输入缓冲区、缓冲区最大长度以及实际读取长度等信息。
char buf[256];
DWORD n;
ReadConsole(hIn, buf, 256, &n, NULL);
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
while (true)
{
char buf[256];
DWORD n;
cout << "请输入字符: ";
if (!ReadConsole(hIn, buf, 256, &n, NULL))
{
cerr << "读取失败!" << endl;
break;
}
if (n > 0 && buf[n - 1] == '\n')
{
buf[n - 1] = '\0';
}
cout << "您输入的字符是: " << buf << endl;
}
return 0;
}
这个程序会一直循环读取键盘输入,并将输入的字符输出到控制台上。注意,如果输入为空行,则不会输出任何信息并且会继续循环等待新的输入。