C++ 如何在ncurses中使用get UTF-8口音

C++ 如何在ncurses中使用get UTF-8口音,c++,utf-8,ncurses,C++,Utf 8,Ncurses,我最近安装了新的Windows10Build14393,我想使用新的linux子系统。所以我决定学习ncurses,但我找不到如何从getch中获得带有类似è口音的字符的UTF-8代码。 这是我的代码: #include <iostream> #include <string> #include <curses.h> using namespace std; int main(int argc, char **argv) { char ch; s

我最近安装了新的Windows10Build14393,我想使用新的linux子系统。所以我决定学习ncurses,但我找不到如何从
getch
中获得带有类似
è
口音的字符的UTF-8代码。 这是我的代码:

#include <iostream>
#include <string>
#include <curses.h>

using namespace std;

int main(int argc, char **argv)
{
  char ch;

  setlocale(LC_ALL, "fr_FR.UTF-8");

  initscr();
  cbreak();
  noecho();

  printw("èèè\n"); // i can print accents

  ch = getch(); // if i press è it gives me 2 characters
  printw("%d", ch);
  ch = getch();
  printw("%d", ch);

  getch(); // wait for a key to exit
  endwin();

  return 0;
}
我的语言环境配置为fr_fr.UTF-8。 谢谢您的回答。

调用
getch()
返回32位
chtype
值中的8位字符(
char
将无法正常工作,但在本例中不是问题)。UTF-8是一种多字节编码,在这种情况下,ncurses每次调用将返回一个字节

要获取Unicode(宽字符)值,请使用,例如

当然,您应该检查
get\u wch
的返回值,但是它的返回值应该是
OK
ERR
-字符通过作为参数传递的指针返回。

getch()
调用返回32位
chtype
值中的8位字符(
char
无法正常工作,但在本例中不是问题)。UTF-8是一种多字节编码,在本例中,ncurses将在每次调用时返回一个字节

要获取Unicode(宽字符)值,请使用,例如


当然,您应该检查
get_wch
的返回值,但是它的返回值应该是
OK
ERR
-字符通过作为参数传递的指针返回。

,简而言之,utf8将不同的代码点编码为1个或更多字节的序列,简而言之,utf8编码不同ENT代码指向1个或更多字节的序列。当我编译时,它说我<代码> GETYWCH没有在这个范围内声明< /code >。我需要另外一个头文件吗?好的,我发现我必须“代码>包含< /代码>。非常感谢。”我想你是指<代码> <代码>(另一个是C++绑定)。我使用C++。我忘记了包含,因为前者定义了您不使用的方法。不过,它可以工作……当我编译它时,它说我
get\u wch没有在这个范围内声明
。我需要包含另一个头文件吗?好的,我发现我必须
#包含
。非常感谢。:)我想你是指<代码> <代码>(另一个是C++绑定)。我使用C++。我忘记了包含,因为前者定义了您不使用的方法。不过,它会起作用的。。。
g++ file.cxx -o file -lncursesw
wchar_t ch;
get_wch(&ch);