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;
}
@Misaki Nie testowałem, ale czy możesz spróbować usunąć bit „endl”?
Sheen
3
Jaką bibliotekę muszę dołączyć, aby poznać klasę HANDLE?
STF
2
@STF po prostu użyj <windows.h>
Sheen
36
Kody kolorów ucieczki 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 mam system Windows 10, a kody ucieczkowe są pracujący dla mnie, ale wydaje mi się, że masz na pierwszy plan i tło kody odwrócone. Czy możesz zamienić nagłówki „FG” i „BG”?
yamex5
Muszę się zgodzić z @ yamex5
smoothware
Cześć yamex5 i smoothware, dzięki, OK
Mehdi Mohammadpour
23
Standardowy C ++ nie ma pojęcia „kolory”. Więc to, o co prosisz, zależy od systemu operacyjnego.
Zwróć uwagę, że sekwencje ASNI (lub przynajmniej niektóre z nich) działają również na CMD.EXE w systemie Windows.
Pozew Moniki z
3
@Asu, nie robią tego przed Win10 Anniversary Edition. Jeśli Twój Win10 jest aktualny, masz go.
kayleeFrye_onDeck,
7
Możesz pisać metody i wywoływać w ten sposób
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
Zakładając, że mówisz o oknie konsoli systemu Windows, poszukaj funkcji konsoli w dokumentacji biblioteki MSDN.
W przeciwnym razie lub bardziej ogólnie zależy to od konsoli. Kolory nie są obsługiwane przez bibliotekę C ++. Ale biblioteka do obsługi konsoli może / będzie obsługiwać kolory. Np. Google „ncurses colors”.
W przypadku podłączonych terminali szeregowych i emulatorów terminali można sterować, wyświetlając „sekwencje specjalne”. Zazwyczaj zaczynają się od ASCII 27 (znak zmiany znaczenia w ASCII). Istnieje standard ANSI i wiele niestandardowych schematów.
Odkąd napisano tę odpowiedź, system Windows 10 zyskał obsługę sekwencji ucieczki ANSI dla wąskich strumieni konsoli.
Pozdrawiam i hth. - Alf
2
Nie jestem pewien, co naprawdę chcesz robić, ale domyślam się, że chcesz, aby Twój program C ++ wyświetlał kolorowy tekst w konsoli, prawda? Nie wiem o systemie Windows, ale we wszystkich Unices (w tym Mac OS X) po prostu użyjesz do tego sekwencji ucieczki ANSI .
Gdzie „F” to kod koloru tła, a 3 to kod koloru tekstu.
Zadzieraj z nim, aby zobaczyć inne kombinacje kolorów:
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;
Uwaga: testowałem tylko w systemie Windows. Pracuje. Jak wskazano, to nie jest wieloplatformowa, nie będzie działać w systemach Linux.
Odpowiedzi:
Dodaj trochę koloru do tekstu konsoli
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; }
Atrybuty znaków Oto jak należy interpretować wartość „k”.
źródło
Kody kolorów ucieczki 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
Przykładowy kod dla 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:
źródło
Standardowy C ++ nie ma pojęcia „kolory”. Więc to, o co prosisz, zależy od systemu operacyjnego.
W systemie Windows możesz sprawdzić funkcję SetConsoleTextAttribute .
Na * nix musisz użyć sekwencji specjalnych ANSI .
źródło
Możesz pisać metody i wywoływać w ten sposób
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
źródło
SetConsoleTextAttribute(hConsole, 15);
ustawia kolor na jasną biel , a nie na biały . 7 - biały. i 15 - Bright WhiteW systemie Windows 10 możesz użyć sekwencji ucieczki w ten sposób:
#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;
źródło
Zakładając, że mówisz o oknie konsoli systemu Windows, poszukaj funkcji konsoli w dokumentacji biblioteki MSDN.
W przeciwnym razie lub bardziej ogólnie zależy to od konsoli. Kolory nie są obsługiwane przez bibliotekę C ++. Ale biblioteka do obsługi konsoli może / będzie obsługiwać kolory. Np. Google „ncurses colors”.
W przypadku podłączonych terminali szeregowych i emulatorów terminali można sterować, wyświetlając „sekwencje specjalne”. Zazwyczaj zaczynają się od ASCII 27 (znak zmiany znaczenia w ASCII). Istnieje standard ANSI i wiele niestandardowych schematów.
źródło
Nie jestem pewien, co naprawdę chcesz robić, ale domyślam się, że chcesz, aby Twój program C ++ wyświetlał kolorowy tekst w konsoli, prawda? Nie wiem o systemie Windows, ale we wszystkich Unices (w tym Mac OS X) po prostu użyjesz do tego sekwencji ucieczki ANSI .
źródło
W systemie Windows można użyć dowolnej kombinacji koloru czerwonego, zielonego i niebieskiego na pierwszym planie (w tekście) i w tle.
/* 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;
Źródło: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes
źródło
Najprostszy sposób, jaki możesz zrobić, to:
#include <stdlib.h> system("Color F3");
Gdzie „F” to kod koloru tła, a 3 to kod koloru tekstu.
Zadzieraj z nim, aby zobaczyć inne kombinacje kolorów:
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;
Uwaga: testowałem tylko w systemie Windows. Pracuje. Jak wskazano, to nie jest wieloplatformowa, nie będzie działać w systemach Linux.
źródło
Nie musisz korzystać z żadnej biblioteki. Po prostu napisz system („kolor 4f”);
źródło
Nie używaj opcji „system („ Kolor… ”)”, jeśli nie chcesz, aby cały ekran był wypełniony kolorem. Oto skrypt potrzebny do stworzenia kolorowego tekstu:
#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; }
źródło
Tutaj przykład cplusplus jest przykładem użycia kolorów w konsoli.
źródło