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

时间:2012-09-08 08:49:12

标签: c++ ncurses stdstring

我正在使用ncurses进行一个小型控制台游戏。在主菜单中,我希望用户能够设置控制键。据我所知,在ncurses中你可以访问e.a. a-key由char'a'的int值。使用带有'a'的关键游戏可以完美地工作,但是我坚持使用菜单:

对于每个键绑定,我存储了一个默认为e.a的int值。 '一个'。当游戏开始时,我从int值正确读取'a'绑定并且可以使用它来进行游戏。但是,它无法正确显示。我希望它是这样的:“左:一个”。我是这样做的:

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

_value是我存储的int值,并初始化为'a'。我也尝试了没有演员,顺便说一句。

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

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

非常感谢!

1 个答案:

答案 0 :(得分:2)

您正在将字符串文字的地址和_value的ASCII值相加。然后根据该垃圾地址发生的任何事情构造字符串key

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

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