Как я могу легко преобразовать строку в символ клавиатуры - PullRequest
0 голосов
/ 27 октября 2019

Да, я делаю парсинг горячих клавиш, и я мог бы сделать простой способ преобразования строки в символ клавиатуры вместо написания всего синтаксического анализатора
Например: "F6" -> VK_F6

1 Ответ

0 голосов
/ 27 октября 2019

Такие типы конверсии можно легко выполнить с помощью справочных таблиц. В C ++ вы можете использовать std::map для этой цели. Есть много других возможностей.

Пожалуйста, посмотрите пример ниже:

#include <iostream>
#include <map>
#include <string>

constexpr unsigned int VK_F1 = 0x70;
constexpr unsigned int VK_F2 = 0x71;
constexpr unsigned int VK_F3 = 0x72;
constexpr unsigned int VK_F4 = 0x73;
constexpr unsigned int VK_F5 = 0x74;
constexpr unsigned int VK_F6 = 0x75;

std::map<std::string, unsigned int> lookup{
    {"F1", VK_F1},
    {"F2", VK_F2},
    {"F3", VK_F3},
    {"F4", VK_F4},
    {"F5", VK_F5},
    {"F6", VK_F6},
};

int main() {

    unsigned int virtualKeyCode{ 0 };
    std::string keyString{};

    keyString = "F6";
    virtualKeyCode = lookup[keyString];

    std::cout << std::hex << virtualKeyCode << "\n";

    return 0;
}

Конечно, вам нужно расширить для дальнейших ключей.

...