Tal vez se habrán dado cuenta que mostrar un mensaje en color en consola, no es algo trivial en C++... C++ no incluye funciones propias para hacer esto, ya que "colorear" la consola es algo dependiente del sistema operativo. Tampoco hay alguna manera relativamente sencilla, que podamos decir "bueno, haciendo esto tengo las letras en colores"... Por ejemplo, en Windows esto se logra sólo con llamadas a la API de Windows (usando arreglos de memoria que contienen atributos de color y caracteres, llamados "
Console Screen Buffers"). En Linux, existen los llamados
códigos ANSI, que son una secuencia de caracteres ASCII que actúan como funciones para poder cambiar estos atributos.
Para simplicarles las cosas, hice esta pequeña librería (basándome en código que encontré por Internet) que engloba y unifica estas diferencias, de tal manera de hacerla independiente de la plataforma con tal de poder incluirla en programas de Windows o Linux con un uso común.
Es un simple archivo
.h, que define los colores para pasárselos al
cout de la siguiente forma:
cout<<color<<"texto de prueba";
Los colores disponibles son los siguientes:
black (negro), red (rojo), green (verde), yellow (amarillo), blue (azul), magenta (magenta), cyan (cian), white (blanco), normal (volver al color por defecto), blackb (negro en negrita), redb (rojo en negrita), greenb (verde en negrita), yellowb (amarillo en negrita), blueb (azul en negrita), magentab (magenta en negrita), cyanb (cian en negrita), whiteb (blanco en negrita), normalb (volver al color por defecto en negrita).
Es decir que si por ejemplo queremos mostrar un mensaje como el siguiente:
Mensaje con muchos colores
se debería escribir:
cout<<red<<"Mensaje "<<yellow<<"con "<<green<<"muchos "<<blueb<<"colores"<<normal;
Como en Windows no se puede especificar un atributo "negrita" para la consola, las versiones en negrita de los colores tienen una intensidad diferente de las versiones normales. En las siguientes imágenes se ven las diferencias entre Windows y Linux (
código de ejemplo):
|
consola de Windows |
|
consola de Linux |
Para compilar, hay que definir la macro
WIN si están en Windows, o
LINUX si están en Linux. De esta forma se usa el código correspondiente dependiendo de la plataforma elegida.
Esto se hace con la opción
-D de
g++, por ejemplo:
g++ -o colores colores.cpp -DLINUX
Por ahora como se habrán dado cuenta sólo permite cambiar el color de frente y no el de fondo. A lo mejor en algún momento la amplíe incluyéndole esta funcionalidad.
La pueden descargar de acá: concolor.h