Charlie
Charlie

Reputation: 70

Wide Characters not printing while using Ncurses (C++)

The below code fails to print the wide character:

#include <ncurses.h>

using namespace std;

int main(void){
  initscr();
  printw("█");
  getch();
  endwin();
}

This code seems to work on some computers and not others, although all the libraries are installed correctly. (The terminal is capable of displaying extended char!)

I compiled this using:

g++ -std=c++14 widechartest.cpp -o widechar -lncursesw

Could somebody let me know what the problem is? Thanks 8)

Upvotes: 1

Views: 1522

Answers (1)

Thomas Dickey
Thomas Dickey

Reputation: 54465

You didn't initialize the locale. The manual page points this out:

The library uses the locale which the calling program has initialized. That is normally done with setlocale:

setlocale(LC_ALL, "");

If the locale is not initialized, the library assumes that characters are printable as in ISO-8859-1, to work with certain legacy programs. You should initialize the locale and not rely on specific details of the library when the locale has not been setup.

Upvotes: 2

Related Questions