Zeigen Sie wchar_t mit ncurses an

Ich arbeite derzeit an einem C ++ - Projekt, in dem ich einige erweiterte Zeichen (wchar_t) anzeigen muss.

Das Hauptproblem ist, dass, auch wenn es in C gut funktioniert (mitwprintf), es funktioniert nicht in C ++ mitmvwaddwstr oderwaddwstr. Natürlich habe ich das Gebietsschema so eingestellt:setlocale(LC_ALL, "");und nichts wird angezeigt.

Hat jemand dieses Problem schon mal oder hat er eine Idee dazu?

Vielen Dank.

Hier ist der Code:

  struct charMap { int x; int y; wchar_t value };
  int                   i, x, y;
  wchar_t               str[2];
  struct charMap _charMap[2] = {
    {0,0,9474}
    {29, 29, 9474}
  };
  initscr();
  setlocale(LC_ALL, "");
  for (y = 0 ; y < 30 /* length */ + 2 ; y++) {
    for (x = 0 ; x < 30 /* width */ + 2; x++) {
      for (i = 0 ; i < 2 ; i++) {
        if ((x == _charMap[i].x || _charMap[i].x == -1) &&
            (y == _charMap[i].y || _charMap[i].y == -1)) {
          str[0] = _charMap[i].value;
          str[1] = L'\0';
          mvwaddwstr(stdscr, y, x, str);
          break;
        }
      }
    }
  }
  refresh();
  while(1);

_charMap ist eine Strukturtabelle mit nützlichen Werten für den einfachen Vergleich (Vermeidung der schwerenif ... else if ... else Struktur)._charMap[].value ist einwchar_t, und_charMap[].x ist ein int, wie_charMap[].y.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage