我目前正在一個C++項目中,我需要顯示一些擴展字符(wchar_t)。顯示wchar_t使用ncurses
主要的問題是,即使它在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
。
你能可能創建一個[SSCCE(http://sscce.org/),並告訴我們你嘗試過什麼?任何代碼都會有幫助。 – 2013-03-05 11:23:19
我已經添加了一段應該工作的代碼。 – GeoffreyB 2013-03-05 12:13:28