Le sequenze di escape ANSI * sono corrette per colorare il testo nel terminale (Linux)?

-1

Sono appena tornato a Linux dopo alcuni anni di utilizzo di Windows e mi chiedo se le sequenze di escape ANSI siano adatte per colorare il testo. Chiedo perché il modo in cui l'ho fatto su Windows non è in grado di attraversare le piattaforme a causa dell'uso di windows.h.

Qualcuno ha menzionato NCurses o qualcosa del genere ma non me lo ha spiegato. Questa sarebbe una buona alternativa? C'è qualche aspetto negativo di NCurses o ANSI esc? Scusa se questa domanda è stupida, sono ancora un principiante.

Questo era il codice che ho usato per il testo colorato su Windows.

int setColor(const int foreground, const int background)
{
    int Color = foreground + (background * 16);
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, Color);

    return 0;
}

Grazie, xChubz

    
posta TDubs95 29.05.2015 - 02:51
fonte

1 risposta

5

Le sequenze di escape ANSI non sono supportate da tutti i terminali; il caso più comune che incontrerai è una sessione remota che non supporta il colore, in cui l'emulatior del terminale tenterà di visualizzare le sequenze di escape del colore. Dovresti sicuramente usare una libreria TUI (terminale / interfaccia utente testuale) (potresti anche vederle chiamate librerie "console user interface" (CUI)). Ncurses (o maledizioni, il suo predecessore) è uno di questi, ma non è l'unico; Newt è un altro. Vi sono anche librerie di capacità terminali, come termcap e terminfo (quest'ultimo ha soppiantato il primo), che contengono sequenze di controllo terminale. Ncurses (e altre librerie TUI) usano terminfo.

Le librerie TUI forniscono non solo la portabilità cross-terminal, ma cross-platform, in quanto alcune librerie (inclusi i ncurs) sono state trasferite su Windows.

Il trade-off è un certo tipo di complessità, ma ti libererai anche di una diversa (e molto meno gestibile) complessità (che si occupa di diverse funzionalità del terminale).

    
risposta data 29.05.2015 - 06:02
fonte

Leggi altre domande sui tag