c++ - 使用 addch 获得意想不到的字符

标签 c++ linux ncurses unreal-engine4

我将 ncurses 与 noecho() 一起使用,并且我正在尝试从 TCHAR(或 char16_t)打印一个字符串带有 addch() 函数的数组。

我试过将我的 TCHAR 转换为 int,但结果相同。

这是我正在使用的代码:

coords hCursorPosition( GetCursorPosition() );
        if ( hCursorPosition.X == 0 ) return;
        coords nCursorPosition(hCursorPosition.Y, 0);
        SetCursorPosition(nCursorPosition);
        clrtoeol();
        if (!m_sInput.IsEmpty())
        {
            for (auto CharIt(m_sInput.CreateConstIterator()); CharIt; CharIt++)
            {
                const TCHAR Char = *CharIt;
                int intChar = static_cast<int>(Char);
                addch(intChar);
                refresh();
            }
        }

m_sInput 是一个 FString(Unreal Engine 4 中使用的一种类型),我检查了 FString 长度,它是正确的,而结果不是我所期望的。

例如,如果 m_sInput 是“test”,我的输出将是“test^@”

最佳答案

addch需要一个 chtype 参数,它包含一个 8 位字符(如果您碰巧向它传递一个 NUL,它将显示为 < strong>^@).

wchar_t 包含超过 8 位的字符。使用 addwstr为了那个

关于c++ - 使用 addch 获得意想不到的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56877249/

相关文章:

c++ - 使用 `pkg-config...` 的 g++ 编译器选项会导致 -I(directory) -I 是什么意思?

c - 如何检测在 C 中使用 curses 按下的箭头键?

C++ 使用外部参数为 'compound names' 分配变量

c++ - 函数不返回我想要的值

c++ - 在单编写器多阅读器情况下,是否需要为uint64_t锁定?

改变颜色定义 ncurses C

c - ncurses 程序在 PuTTY 以外的任何东西上崩溃

c++ - 与库链接相比,实现前端的优势

c++ - 没有这样的文件或目录,但存在文件

Bash 脚本中的 Linux SED 命令从字符串中剥离 '