首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pdcurses显示重音字符

用pdcurses显示重音字符
EN

Stack Overflow用户
提问于 2016-11-20 18:11:40
回答 1查看 208关注 0票数 0
代码语言:javascript
复制
#include <curses.h>

int main(){

    initscr();

    for(int i = -128; i < 128; ++i)
        addch(i);

    getch();
    endwin();

}

Pdcurses显示字符的空白-128到0 (128到255)。至少有什么方法可以让诸如é这样的重音字符正确显示吗?iostream没有问题:

代码语言:javascript
复制
int main(){

    for(int i = -128; i < 128; ++i)
    std::cout << char(i);

}

我编译了具有广泛字符和UTF支持的pdcurses,尽管这肯定不是这里的问题,对吗?(因为我想要的字符包含在0-255中,所以使用add_wch并不能解决这个问题)。

Windows 10 64位与g++ 6.1.0.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-23 19:30:02

我很傻。addch采用chtype类型的值。除了表示字符之外,文档对于chtype的实际类型并不太清楚。看看curses.h,我可以看到chtype是unsigned long类型的。因此,负的i值被转换到unsigned中,因此导致诅咒不得不打印没有为其分配ASCII表示的字符。我也迷失了方向,因为这段看似相似的代码没有使用负值,因此产生了相同的结果:

代码语言:javascript
复制
int main(){

    initscr();

    for(int i = 0; i < 255; ++i)
        addch(char(i));

    getch();
    endwin();

}

直到我记得char在默认情况下可能会被签名,所以在调用char(i)之前,addch当然会被包装成负值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40707557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档