gpt4 book ai didi

c - 使用 pdcurses 显示重音字符

转载 作者:行者123 更新时间:2023-11-30 16:53:50 25 4
gpt4 key购买 nike

#include <curses.h>

int main(){

initscr();

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

getch();
endwin();

}

enter image description here

Pdcurses 显示字符 -128 到 0(128 到 255)的空白。有没有办法至少让重音字符(例如 é)正确显示? iostream 没有任何问题:

int main(){

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

}

enter image description here

我编译了具有宽字符和 UTF 支持的 pdcurses,尽管这肯定不是这里的问题,对吧? (因为我想要的字符包含在 0-255 范围内,并且使用 add_wch 无论如何都没有解决问题)。

Windows 10 64 位,带有 g++ 6.1.0。

最佳答案

我真是太傻了。 addch 采用 chtype 类型的值。除了表示字符之外,文档对 chtype 的实际类型并不太清楚。查看 curses.h 我可以看到 chtype 是 unsigned long 类型。因此,负 i 值被转换为 unsigned 并因此回绕,导致curses 必须打印未分配 ASCII 表示形式的字符。我也迷路了,因为这个看似相似的代码不使用负值产生了相同的结果:

int main(){

initscr();

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

getch();
endwin();

}

直到我想起 char 默认情况下可能是有符号的,因此在调用 addch 之前,char(i) 当然会变成负数。

关于c - 使用 pdcurses 显示重音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40707557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com