📜  cmd 获取键盘输入 (1)

📅  最后修改于: 2023-12-03 14:59:57.285000             🧑  作者: Mango

在CMD中获取键盘输入

在CMD中获取键盘输入是一个常见的需求。实现这个功能需要用到Windows API中的GetStdHandle函数以及ReadConsole函数。

1. 获取标准输入句柄

在Windows中,标准输入、标准输出和标准错误输出都有一个句柄,分别对应STD_INPUT_HANDLESTD_OUTPUT_HANDLESTD_ERROR_HANDLE。我们需要获取标准输入的句柄,才能进行键盘输入的操作。

HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
2. 读取键盘输入

在获取到标准输入句柄之后,我们就可以使用ReadConsole函数读取键盘输入了。ReadConsole函数的参数包括句柄、输入缓冲区、缓冲区最大长度以及实际读取长度等信息。

char buf[256];
DWORD n;
ReadConsole(hIn, buf, 256, &n, NULL);
3. 完整代码示例
#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;
}

这个程序会一直循环读取键盘输入,并将输入的字符输出到控制台上。注意,如果输入为空行,则不会输出任何信息并且会继续循环等待新的输入。

4. 参考链接