Greetings,
I’m developing a project in C++ where I want to use characters like á é õ and ┌ ─ ┐ │ to draw a couple of nice frames. My doubt resides in what I should change in my code/project settings since, without any kind of modifications, the console just prints pseudo-random characters.
I know that the above characters are defined in the character set Code page 437 aka Extended ASCII, but what I should do know?
After some research, I included the instruction setlocale(LC_CTYPE, ""); and now I can print accented characters (à é õ) but can’t print the borders.
Also, should I use char and string or wchar and wstring to use these characters?
Thanks
I think the best way to do it would be to use wchar and wstring for the characters – they are meant for locale-independant string operations and are defined as UTF-16 in Windows and as UTF-32 in Linux.
Note that you need to use the proper functions, for example
wprintfinstead ofprintf… If you’re usingiostream, I think that should work out-of-the-box with wstrings.EDIT: Note that it is not required for
wchar_tto be unicode (in practice, it often is). Ifwchar_t(and thus,wstring) is unicode, then the C99 standard (and therefore most likely the C++ standard) states that__STDC_ISO_10646__is to be defined.In other words, if
__STDC_ISO_10646__is defined, then thewchar_tis unicode — as for the exact type (UTF-16 or UTF-32), you can use a sizeof(wchar_t).