我目前正在开发一个 C++ 项目,我需要在其中显示一些扩展字符(wchar_t)。
主要问题是,即使它在 C 中运行良好(使用),它在 c++ 中使用orwprintf
也不起作用。当然,我已经设置了这样的语言环境: ,并且没有显示任何内容。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
.