“失败”,因为该功能无法按预期工作。
我正在尝试使用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 );
}