私は現在、いくつかの拡張文字(wchar_t)を表示する必要があるC++プロジェクトに取り組んでいます。
主な問題は、(を使用して)Cで正常に動作しても、またはwprintf
を使用してC++では動作しないことです。もちろん、ロケールを次のように設定しました: 、何も表示されません。mvwaddwstr
waddwstr
setlocale(LC_ALL, "");
誰かが以前にこの問題を抱えていましたか、それともそれについて考えていますか?
ありがとう。
コードは次のとおりです。
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は、簡単に比較できる(重いif ... else if ... else
構造を回避する)ための有用な値を含む構造体テーブルです。_charMap[].value
は、wchar_t
であり_charMap[].x
、のようにintです_charMap[].y
。