代码之家  ›  专栏  ›  技术社区  ›  Sudantha

用C++在控制台中着色文本

  •  62
  • Sudantha  · 技术社区  · 15 年前

    如何用C++编写控制台的彩色文本?也就是说,我如何用不同的颜色写不同的文本?

    11 回复  |  直到 7 年前
        1
  •  83
  •   Sheen    8 年前
      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;
      }
    

    alt text

    Character Attributes

        2
  •  15
  •   user225312    15 年前
        3
  •  5
  •   Matthias Pandu    8 年前

        4
  •  5
  •   Mehdi Mohammadpour    7 年前

    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
    

    #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
    
        5
  •  4
  •   Synxis Avt    10 年前


    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
    
        6
  •  2
  •   DarkDust    15 年前
        7
  •  2
  •   Community Mohan Dere    7 年前

    #include <stdlib.h>
    
    system("Color F3");
    

    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;
    
        8
  •  1
  •   cambunctious    10 年前

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

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

        9
  •  1
  •   Krzysztof Buchacz    7 年前

    #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;
    
        10
  •  0
  •   Microprod Software    7 年前

    #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;
    }
    
        11
  •  -1
  •   Łukasz Milewski    15 年前