HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// you can loop k higher to see more color choicesfor(int k = 1; k < 255; k++)
{
// pick the colorattribute k you want
SetConsoleTextAttribute(hConsole, k);
cout << k << " I want to be nice today!" << endl;
}
¿Y si quiero agregar varios colores en una línea ?.
Fadwa
3
@Misaki No lo he probado, pero ¿puedes intentar eliminar el bit 'endl'?
Sheen
3
¿Qué biblioteca necesito incluir para conocer la clase HANDLE?
STF
2
@STF solo usa <windows.h>
Sheen
36
Códigos de color de escape ANSI:
Name FG BG
Black 3040
Red 3141
Green 3242
Yellow 3343
Blue 3444
Magenta 3545
Cyan 3646
White 3747
Bright Black 90100
Bright Red 91101
Bright Green 92102
Bright Yellow 93103
Bright Blue 94104
Bright Magenta 95105
Bright Cyan 96106
Bright White 97107
@Mehdi Mohammadpour Tengo Windows 10 y sus códigos de escape están trabajando para mí, pero me parece que usted tiene el primer plano y los códigos de fondo invertido. ¿Puede invertir los títulos 'FG' y 'BG', por favor?
yamex5
Estoy de acuerdo con @ yamex5
smoothware
Hola yamex5 y smoothware, Gracias, de acuerdo
Mehdi Mohammadpour
23
C ++ estándar no tiene noción de 'colores'. Entonces, lo que pregunte depende del sistema operativo.
Tenga en cuenta que las secuencias ASNI (o al menos algunas de ellas) también funcionan en CMD.EXE de Windows.
Financia la demanda de Monica
3
@Asu, no lo hacen antes de Win10 Anniversary Edition. Si su Win10 nos está actualizado, lo tiene.
kayleeFrye_onDeck
7
Puedes escribir métodos y llamar así
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
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.
Desde que se escribió esa respuesta, Windows 10 ganó soporte para secuencias de escape ANSI para los flujos de consola estrechos.
Saludos y hth. - Alf
2
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.
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.
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".
fuente
Códigos de color de escape ANSI:
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
Código de muestra para C / C ++:
#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; }
GCC:
fuente
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 .
fuente
Puedes escribir métodos y llamar así
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
fuente
SetConsoleTextAttribute(hConsole, 15);
establece el color en Blanco brillante , no en Blanco . 7 - Blanco. and 15 - Bright WhiteEn 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;
fuente
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.
fuente
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.
fuente
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;
Fuente: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes
fuente
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.
fuente
No es necesario utilizar ninguna biblioteca. Solo escriba el sistema ("color 4f");
fuente
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; }
fuente
Aquí el ejemplo de cplusplus es un ejemplo de cómo usar colores en la consola.
fuente