Colorizing text in the console with C++

后端 未结 12 2404
礼貌的吻别
礼貌的吻别 2020-11-27 10:04

How can I write colored text to the console with C++? That is, how can I write different text with different colors?

相关标签:
12条回答
  • 2020-11-27 10:36

    You don't need to use any library. Just only write system("color 4f");

    0 讨论(0)
  • 2020-11-27 10:40

    ANSI escape color codes :

    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
    

    Sample code for 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
    
    0 讨论(0)
  • 2020-11-27 10:40

    Here cplusplus example is an example how to use colors in console.

    0 讨论(0)
  • 2020-11-27 10:41

    Do not use "system("Color …")" if you don't want the entire screen to be filled up with color. This is the script needed to make colored text:

    #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;
    }
    
    0 讨论(0)
  • 2020-11-27 10:42

    In Windows, you can use any combination of red green and blue on the foreground (text) and the background.

    /* 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;
    

    Source: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes

    0 讨论(0)
  • 2020-11-27 10:46

    You can write methods and call like this


    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
    
    0 讨论(0)
提交回复
热议问题