0

“失败”是指该功能无法按预期工作。

我正在尝试使用 NCurses 为宽字符添加颜色。以下函数正确显示文本 --- 但仅以终端的默认颜色显示,无论pair颜色对的值如何。(根据 GDB,在宏pair之后保存正确的值。)如果我用一个常量(如)替换,该函数会正确地以颜色写入文本。 wattr_getpair4

我在 GDB 和 NCurses 5.9 源代码上花了一些时间,但我无法解释为什么常量有效而变量无效。

void color_write( const std::wstring &w ) {
    // Convert to cchar_t for NCurses
    attr_t attrs;
    short pair;
    wattr_get( window_, &attrs, &pair, nullptr );  
    std::vector< cchar_t > color_str;
    std::wstring wt;
    cchar_t ct;
    for( auto& i: w ) {
        wt = i;
        if( OK != ::setcchar( &ct, wt.c_str(), attrs, pair, nullptr ) ) throw;
        color_str.push_back( ct );
    }
    ct.chars[0] = 0;
    color_str.push_back( ct );
    ::wadd_wchnstr( window_, color_str.data(), -1 );
}
4

0 回答 0