Come posso scrivere testo colorato sulla console con C ++? Cioè, come posso scrivere un testo diverso con colori diversi?
Come posso scrivere testo colorato sulla console con C ++? Cioè, come posso scrivere un testo diverso con colori diversi?
Risposte:
Aggiungi un po 'di colore al testo della tua console
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// you can loop k higher to see more color choices
for(int k = 1; k < 255; k++)
{
// pick the colorattribute k you want
SetConsoleTextAttribute(hConsole, k);
cout << k << " I want to be nice today!" << endl;
}
Attributi dei caratteri Ecco come interpretare il valore "k".
Name FG BG
Black 30 40
Red 31 41
Green 32 42
Yellow 33 43
Blue 34 44
Magenta 35 45
Cyan 36 46
White 37 47
Bright Black 90 100
Bright Red 91 101
Bright Green 92 102
Bright Yellow 93 103
Bright Blue 94 104
Bright Magenta 95 105
Bright Cyan 96 106
Bright White 97 107
#include <iostream>
#include <string>
int main(int argc, char ** argv){
printf("\n");
printf("\x1B[31mTexting\033[0m\t\t");
printf("\x1B[32mTexting\033[0m\t\t");
printf("\x1B[33mTexting\033[0m\t\t");
printf("\x1B[34mTexting\033[0m\t\t");
printf("\x1B[35mTexting\033[0m\n");
printf("\x1B[36mTexting\033[0m\t\t");
printf("\x1B[36mTexting\033[0m\t\t");
printf("\x1B[36mTexting\033[0m\t\t");
printf("\x1B[37mTexting\033[0m\t\t");
printf("\x1B[93mTexting\033[0m\n");
printf("\033[3;42;30mTexting\033[0m\t\t");
printf("\033[3;43;30mTexting\033[0m\t\t");
printf("\033[3;44;30mTexting\033[0m\t\t");
printf("\033[3;104;30mTexting\033[0m\t\t");
printf("\033[3;100;30mTexting\033[0m\n");
printf("\033[3;47;35mTexting\033[0m\t\t");
printf("\033[2;47;35mTexting\033[0m\t\t");
printf("\033[1;47;35mTexting\033[0m\t\t");
printf("\t\t");
printf("\n");
return 0;
}
g++ cpp_interactive_terminal.cpp -o cpp_interactive_terminal.cgi
chmod +x cpp_interactive_terminal.cgi
./cpp_interactive_terminal.cgi
Il C ++ standard non ha la nozione di "colori". Quindi quello che chiedi dipende dal sistema operativo.
Per Windows, puoi controllare SetConsoleTextAttribute funzione .
Su * nix, devi usare le sequenze di escape ANSI .
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int col=12;
// color your text in Windows console mode
// colors are 0=black 1=blue 2=green and so on to 15=white
// colorattribute = foreground + background * 16
// to get red text on yellow use 4 + 14*16 = 228
// light red on yellow would be 12 + 14*16 = 236
FlushConsoleInputBuffer(hConsole);
SetConsoleTextAttribute(hConsole, col);
cout << "Color Text";
SetConsoleTextAttribute(hConsole, 15); //set back to black background and white text
SetConsoleTextAttribute(hConsole, 15);
imposta il colore su Bright White , non su White . 7 - Bianco. e 15 - Bright White
Su Windows 10 puoi usare le sequenze di escape in questo modo:
#ifdef _WIN32
SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), ENABLE_VIRTUAL_TERMINAL_PROCESSING);
#endif
// print in red and restore colors default
std::cout << "\033[32m" << "Error!" << "\033[0m" << std::endl;
Supponendo che tu stia parlando di una finestra della console Windows, cerca le funzioni della console nella documentazione di MSDN Library.
Altrimenti, o più in generale, dipende dalla console. I colori non sono supportati dalla libreria C ++. Ma una libreria per la gestione della console può / supporterà i colori. Ad esempio google "ncurses colors".
Per i terminali seriali collegati e gli emulatori di terminale è possibile controllare le cose emettendo "sequenze di escape". In genere iniziano con ASCII 27 (il carattere di escape in ASCII). C'è uno standard ANSI e molti schemi personalizzati.
Non sono sicuro di cosa vuoi veramente fare, ma la mia ipotesi è che tu voglia che il tuo programma C ++ esegua l'output di testo colorato nella console, giusto? Non so di Windows, ma su tutti gli Unix (incluso Mac OS X), useresti semplicemente sequenze di escape ANSI per questo.
In Windows, puoi utilizzare qualsiasi combinazione di rosso verde e blu in primo piano (testo) e sullo sfondo.
/* you can use these constants
FOREGROUND_BLUE
FOREGROUND_GREEN
FOREGROUND_RED
FOREGROUND_INTENSITY
BACKGROUND_BLUE
BACKGROUND_GREEN
BACKGROUND_RED
BACKGROUND_INTENSITY
*/
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << "I'm cyan! Who are you?" << std::endl;
Il modo più semplice che puoi fare è:
#include <stdlib.h>
system("Color F3");
Dove "F" è il codice per il colore di sfondo e 3 è il codice per il colore del testo.
Gioca con esso per vedere altre combinazioni di colori:
system("Color 1A");
std::cout << "Hello, what is your name?" << std::endl;
system("Color 3B");
std::cout << "Hello, what is your name?" << std::endl;
system("Color 4c");
std::cout << "Hello, what is your name?" << std::endl;
Nota: ho provato solo su Windows. Lavori. Come sottolineato, questo non è multipiattaforma, non funzionerà su sistemi Linux.
Non è necessario utilizzare alcuna libreria. Basta solo scrivere sistema ("color 4f");
Non usare "sistema (" Colore ... ")" se non vuoi che l'intero schermo sia riempito di colore. Questo è lo script necessario per creare testo colorato:
#include <iostream>
#include <windows.h>
int main()
{
const WORD colors[] =
{
0x1A, 0x2B, 0x3C, 0x4D, 0x5E, 0x6F,
0xA1, 0xB2, 0xC3, 0xD4, 0xE5, 0xF6
};
HANDLE hstdin = GetStdHandle(STD_INPUT_HANDLE);
HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
WORD index = 0;
SetConsoleTextAttribute(hstdout, colors[index]);
std::cout << "Hello world" << std::endl;
FlushConsoleInputBuffer(hstdin);
return 0;
}
L' esempio di cplusplus è un esempio di come utilizzare i colori nella console.