Pregunta

¿Cómo puedo escribir el texto a la consola de color con C ++? Es decir, ¿cómo puedo escribir un texto diferente con diferentes colores?

¿Fue útil?

Solución

Añadir un poco de color a la consola de texto

  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;
  }

texto alt

Atributos de caracteres Aquí es cómo interpretar el valor "k".

Otros consejos

estándar de C ++ no tiene noción de 'colores'. Así que lo que están pidiendo depende del sistema operativo.

En Windows, se puede revisar la SetConsoleTextAttribute función.

En * nix, usted tiene que utilizar la ANSI secuencias de escape.

ANSI códigos de color de escape:

Name            BG  FG
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 ejemplo 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:

g++ cpp_interactive_terminal.cpp -o cpp_interactive_terminal.cgi
chmod +x cpp_interactive_terminal.cgi
./cpp_interactive_terminal.cgi

Se puede escribir métodos y llame como esto


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

Asumiendo que estamos hablando de una ventana de la consola de Windows, busque las funciones de la consola en la documentación de MSDN.

En caso contrario, o más en general, depende de la consola. Los colores no son compatibles con la biblioteca de C ++. Pero una biblioteca para el manejo de la consola puede / apoyará colores. P.ej. Google "ncurses colores".

Para los terminales conectados en serie y emuladores de terminal que puede controlar las cosas mediante la salida de "secuencias de escape". Estos por lo general comienzan con ASCII 27 (el carácter de escape en ASCII). No es un estándar ANSI y una gran cantidad de esquemas personalizados.

No estoy seguro de lo que realmente quiere hacer, pero mi conjetura es que usted quiere que su programa en C ++ para texto en color de salida en la consola, ¿verdad? No sabe acerca de Windows, pero en todos los sistemas Unix (incluyendo Mac OS X), usted sólo tiene que utilizar escape ANSI secuencias para eso.

En Windows, se 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

En Windows 10 puede usar las 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;

La forma más sencilla que puede hacer 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.

perder el tiempo con él para ver otras combinaciones:

system("Color 1A");
cout << "Hello, what is your name?" << endl;
system("Color 3B");
cout << "Hello, what is your name?" << endl;
sytem("Color 4c");
cout << "Hello, what is your name?" << endl;

No utilice "del sistema (" Color ... ")" si no desea que toda la pantalla para ser llenado con el color. Este es el script necesario para hacer que el texto de 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;
}

cplusplus ejemplo es un ejemplo de cómo utilizar los colores en la consola.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top