从int到char的转换以显示ncurses键绑定

Conversion from int to char to display ncurses key bindings

本文关键字:显示 ncurses 绑定 转换 int char      更新时间:2023-10-16

我正在用ncurses开发一款小型主机游戏。在主菜单中,我希望用户能够设置控制键。现在,据我所知,在ncurses中,您可以通过字符"a"的int值访问e.a.a-key。使用带"a"的ingame键可以完美地工作,但我被菜单卡住了:

对于每个键绑定,我都存储了一个默认为e.a."a"的int值。当游戏开始时,我从int值中正确读取了"a"绑定,并可以在游戏中使用它。但是,它没有正确显示。我希望它是这样的:"左:a"。我是这样做的:

std::string key = "Left: " + static_cast<char>(_value);

_value是我存储并初始化为"a"的int值。顺便说一句,,我也试过不用演员阵容

现在显示的内容很奇怪。不是"a",而是"~T^C"。对于字母"s"answers"d",它根本不显示任何内容。"w"变成了一些非常奇怪的编码问号。

我想这与int值中字符的编码有关。那么我该怎么做才能让它以正确的方式显示呢?

非常感谢!

您将字符串文字的地址和_value的ASCII值相加。然后,从发生在该垃圾地址的任何内容构造字符串key

请记住,字符串文字的类型是N const char的数组,当传递给函数和运算符等时,数组会衰减为指向其第一个元素的指针,从而生成const char*。指针的内置+运算符不进行字符串串联。您需要从至少一个操作数构造一个std::string,以便重载运算符启动:

std::string key = std::string("Left: ") + static_cast<char>(_value);