¿Cómo puedo escribir texto en color en la consola con C ++? Es decir, ¿cómo puedo escribir texto diferente con colores diferentes?
¿Cómo puedo escribir texto en color en la consola con C ++? Es decir, ¿cómo puedo escribir texto diferente con colores diferentes?
Respuestas:
Agregue un poco de color al texto de su consola
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;
}
Atributos de los caracteres A continuación se explica cómo se interpreta el valor "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
C ++ estándar no tiene noción de 'colores'. Entonces, lo que pregunte depende del sistema operativo.
Para Windows, puede consultar SetConsoleTextAttribute función .
En * nix, debe usar las secuencias de 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);
establece el color en Blanco brillante , no en Blanco . 7 - Blanco. and 15 - Bright White
En Windows 10, puede usar secuencias de escape de esta manera:
#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;
Suponiendo que está hablando de una ventana de consola de Windows, busque las funciones de la consola en la documentación de MSDN Library.
De lo contrario, o de forma más general, depende de la consola. Los colores no son compatibles con la biblioteca C ++. Pero una biblioteca para el manejo de la consola puede admitir colores. Por ejemplo, google "colores ncurses".
Para terminales en serie conectados y emuladores de terminal, puede controlar las cosas generando "secuencias de escape". Por lo general, comienzan con ASCII 27 (el carácter de escape en ASCII). Existe un estándar ANSI y muchos esquemas personalizados.
No estoy seguro de lo que realmente quieres hacer, pero supongo que quieres que tu programa C ++ genere texto en color en la consola, ¿verdad? No sé sobre Windows, pero en todos los Unices (incluido Mac OS X), simplemente usaría secuencias de escape ANSI para eso.
En Windows, puede usar cualquier combinación de rojo, verde y azul en el primer plano (texto) y el fondo.
/* 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;
La forma más sencilla de hacerlo es:
#include <stdlib.h>
system("Color F3");
Donde "F" es el código para el color de fondo y 3 es el código para el color del texto.
Juega con él para ver otras combinaciones de colores:
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: solo probé en Windows. Trabajos. Como se señaló, esto no es multiplataforma, no funcionará en sistemas Linux.
No es necesario utilizar ninguna biblioteca. Solo escriba el sistema ("color 4f");
No utilice "sistema (" Color ... ")" si no desea que toda la pantalla se llene de color. Este es el script necesario para hacer texto en color:
#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;
}
Aquí el ejemplo de cplusplus es un ejemplo de cómo usar colores en la consola.