我如何使用c ++中的curses安全地将ascii整数转换回其关联的ascii字符?

问题描述 投票:0回答:1

我无法为我的问题找到可靠的解决方案,我只是想做的就是创建一些函数:

  • 在终端中占据行和列的位置。

  • 调用mvinch(window_object,rows,cols)),它返回一个无符号整数,该整数与终端中该位置的字符相对应。

  • 返回与该unsigned int关联的ascii字符,有效地将其强制转换回char。

这里是我在c ++ 11中的代码示例:

char Kmenu::getChrfromW(size_t const y, size_t const x,
                        bool const save_cursor) const {
  size_t curr_y, curr_x;
  getyx(_win, curr_y, curr_x);
  char ch = mvwinch(_win, y, x);
  char ch = ich;
  if (save_cursor)
    wmove(_win, curr_y, curr_x);
  return ch;
}

例如,如果终端中位于位置2,3处的字符是字母'a,我希望此函数返回字母'a'。

我尝试了此处描述的解决方案:

Convert ASCII number to ASCII Character in C

有效地将整数转换为char。

不幸的是,我得到的仍然是整数:在装有'w'的屏幕上进行测试,我得到了整数119。

curses函数mvwinch()的手册页描述了返回chtype的函数,编译器将其识别为无符号int。

是否有内置的curses函数,可直接将char返回而不将其转换为unsigned int,或者我可以通过其他方式实现此目的?

c++11 type-conversion ascii curses
1个回答
0
投票

A chtype包含一个字符以及其他数据。 curses.h标头具有几个符号,这些符号可用于提取这些位。如果用curses.h遮罩并将其转换为A_CHARTEXT,则会得到一个字符:

char
© www.soinside.com 2019 - 2024. All rights reserved.