【发布时间】:2013-02-19 18:36:24
【问题描述】:
我目前正在处理一个需要显示一些扩展字符 (wchar_t) 的 C++ 项目。
主要问题是,即使它在 C 中运行良好(使用 wprintf),在使用 mvwaddwstr 或 waddwstr 的 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 是 int,如 _charMap[].y。
【问题讨论】:
-
您能否创建一个SSCCE 并向我们展示您的尝试?任何代码都会有所帮助。
-
我添加了一段应该可以工作的代码。