현재 확장 된 문자 (wchar_t)를 표시해야하는 C++ 프로젝트에서 작업 중입니다. ncurses를 사용하여 wchar_t 표시
가장 큰 문제
, 그것은mvwaddwstr
또는
waddwstr
를 사용하여 C++에서 작동하지 않습니다 그것 (
wprintf
사용) C에서 잘 작동하더라도 때문이다. 물론 로케일을 다음과 같이 설정했습니다 :
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
은 _charMap[].y
과 같은 int입니다.
당신은 아마도 [SSCCE] (http://sscce.org/)를 만들고 시도 무엇을 우리에게 보여 주시겠습니까? 모든 코드가 도움이 될 것입니다. –
작동해야하는 코드를 추가했습니다. – GeoffreyB