c++ - 如何轻松将字符串转换为键盘字符
问题描述
是的,我正在做热键解析,我可以用一种简单的方法从字符串转换为键盘字符,而不是编写整个解析器
例如:“F6”-> VK_F6
解决方案
这种类型的转换可以通过查找表轻松完成。在 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;
}
当然,您需要扩展更多键。
推荐阅读
- c++ - C++标准输出流(cout)中无法输出按位运算的结果
- excel - 如何在 WorksheetFunction.CountA 中放置工作表引用?
- c# - MVVM 结合多数据源
- python - 无法与 VirtualBox 中的射线头节点连接
- python - Python电报机器人无法识别短信
- python - Windows 10:Pip 安装错误:命令出错,退出状态为 1
- python - 在 docker 中找不到 Python 模块
- mysql - 为什么 Flyway 不执行 ALTER DATABASE?
- java - 为什么我会使用 JsonParser 获得 com.google.gson.stream.MalformedJsonException?
- sql - 雪花临时表测序