- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在用 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_wch
和 waddwstr
,一般都支持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/
我是一名优秀的程序员,十分优秀!