从int到char的转换以显示ncurses键绑定
Conversion from int to char to display ncurses key bindings
我正在用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);
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 字符串-C++后显示的随机字符
- 继承期间显示未知行为的子类
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 程序崩溃并显示"std::out_of_range"错误
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 显示错误输出的简单数组排序程序
- Qt自定义QPush按钮未显示在布局上
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 显示基于用户输入的整数的字符
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Ncurses 窗口不显示任何内容
- 从int到char的转换以显示ncurses键绑定
- 如何通过NCurses的c++绑定在屏幕上显示NCursesPanel
- 如何阻止c++ NCurses显示按下的键