gpt4 book ai didi

c++ - 如何让 ncurses 像 cout 一样显示特殊字符

转载 作者:太空宇宙 更新时间:2023-11-04 13:26:33 30 4
gpt4 key购买 nike

我一直在用 C++ 编写程序,并认为使用 curses 是更好的做事方式(使事情跨平台)。它大部分工作正常,但有一个问题。在我的原始代码中,每当我写 std::cout << char(30)它会输出 .我在我的部分程序中使用了它。现在,当我使用 addch(char(30)) , 它写道 ^[something I don't know because it's overwritten by something else] .

我一直在寻找如何解决这个问题。人们说 curses 包含一些特殊字符,但它们都不是我想要的。人们说我应该尝试使用 -lncursesw ,但我的编译器找不到它。我知道这是一个unicode字符,但我以前怎么能用呢?

我在 Windows 上使用 mingw64 编译我的代码。只要它是跨平台的,我就可以使用许多不同的方法来修复它。我可以尝试找到一些使 unicode 工作的方法(但我不能使用 -lncursesw 的事实似乎表明我不能)。我可以包含一个字符表,但我不知道该怎么做或如何让 curses 使用它。最后,我只想知道:如何使用这些通常可以与 cout 一起使用的特殊字符? ?

最佳答案

ncurses 支持的宽字符调用包括 wadd_wchwaddwstr ,一般都支持UTF-8编码。如果您使用的是“ncurses”库,则很可能存在用于同一平台的“ncursesw”(即使是 mingw,尽管 this page 似乎忽略了构建/提供:说明省略了 --例如启用-widec 选项)。

addch函数只接受一个 8 位字符值。您的参数不适合 8 位值。 ncurses(与 X/Open 不同)允许将 8 位值的序列传递给 addch 并解释为多字节字符(例如 UTF-8)。

关于c++ - 如何让 ncurses 像 cout 一样显示特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194221/

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