函数使用常量作为参数成功,但作为参数变量失败

时间:2013-11-08 18:40:51

标签: c++ ncurses

“失败”,因为该功能无法按预期工作。

我正在尝试使用NCurses为宽字符添加颜色。以下功能正确显示文本---但仅限于终端的默认颜色,无论pair的颜色对是什么值。 (pair在每个GDB的wattr_get宏之后保存正确的值。)如果我用pair替换常量(如4),该函数会正确地写入文本,彩色。

我在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 );
}

0 个答案:

没有答案