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;
}
Что, если я хочу добавить несколько цветов в одну строку ?.
Fadwa
3
@Misaki Я не тестировал, но можете ли вы попробовать удалить бит "endl"?
Sheen
3
Какую библиотеку мне нужно включить, чтобы знать класс HANDLE?
STF
2
@STF просто используйте <windows.h>
Sheen
36
Цветовые коды выхода 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 У меня есть для Windows 10, и ваши управляющих коды будут работать для меня, но мне кажется , что у вас есть передний план и фон кода наоборот. Не могли бы вы поменять местами заголовки «FG» и «BG»?
yamex5
Я согласен с @ yamex5
smoothware
Привет, yamex5 и гладкое ПО, спасибо, хорошо
Мехди Мохаммадпур
23
В стандартном C ++ нет понятия «цвета». Итак, то, что вы спрашиваете, зависит от операционной системы.
Обратите внимание, что последовательности ASNI (или, по крайней мере, некоторые из них) работают и с CMD.EXE Windows.
Иск Фонда Моники
3
@Asu, они этого не сделали до Win10 Anniversary Edition. Если у вас установлена последняя версия Win10, она у вас есть.
kayleeFrye_onDeck
7
Вы можете писать методы и вызывать вот так
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
Предполагая, что вы говорите об окне консоли Windows, поищите функции консоли в документации библиотеки MSDN.
В противном случае или в более общем плане это зависит от консоли. Цвета не поддерживаются библиотекой C ++. Но библиотека для работы с консолью может поддерживать цвета. Например, погуглите "ncurses colors".
Для подключенных последовательных терминалов и эмуляторов терминалов вы можете управлять вещами, выводя «escape-последовательности». Обычно они начинаются с ASCII 27 (escape-символ в ASCII). Есть стандарт ANSI и множество нестандартных схем.
С тех пор, как этот ответ был написан, Windows 10 получила поддержку управляющих последовательностей ANSI для узких консольных потоков.
Приветствия и hth. - Alf
2
Я не уверен, что вы действительно хотите сделать, но предполагаю, что вы хотите, чтобы ваша программа на C ++ выводила цветной текст в консоль, верно? Не знаю о Windows, но во всех Unix (включая Mac OS X) вы просто используете для этого escape-последовательности ANSI .
Где «F» - это код цвета фона, а 3 - код цвета текста.
Поиграйте с ним, чтобы увидеть другие цветовые комбинации:
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;
Примечание: я тестировал только в Windows. Работает. Как уже отмечалось, это не кроссплатформенный вариант, он не будет работать в системах Linux.
Ответы:
Добавьте немного цвета в текст консоли
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; }
Атрибуты символа Вот как следует интерпретировать значение «k».
источник
Цветовые коды выхода 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
Пример кода для 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:
источник
В стандартном C ++ нет понятия «цвета». Итак, то, что вы спрашиваете, зависит от операционной системы.
Для Windows вы можете проверить функцию SetConsoleTextAttribute .
В * nix вы должны использовать escape-последовательности ANSI .
источник
Вы можете писать методы и вызывать вот так
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
источник
SetConsoleTextAttribute(hConsole, 15);
цвета устанавливается « Ярко-белый» , а не « Белый» . 7 - Белый. и 15 - Ярко-белыйВ Windows 10 вы можете использовать escape-последовательности следующим образом:
#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;
источник
Предполагая, что вы говорите об окне консоли Windows, поищите функции консоли в документации библиотеки MSDN.
В противном случае или в более общем плане это зависит от консоли. Цвета не поддерживаются библиотекой C ++. Но библиотека для работы с консолью может поддерживать цвета. Например, погуглите "ncurses colors".
Для подключенных последовательных терминалов и эмуляторов терминалов вы можете управлять вещами, выводя «escape-последовательности». Обычно они начинаются с ASCII 27 (escape-символ в ASCII). Есть стандарт ANSI и множество нестандартных схем.
источник
Я не уверен, что вы действительно хотите сделать, но предполагаю, что вы хотите, чтобы ваша программа на C ++ выводила цветной текст в консоль, верно? Не знаю о Windows, но во всех Unix (включая Mac OS X) вы просто используете для этого escape-последовательности ANSI .
источник
В Windows вы можете использовать любую комбинацию красного, зеленого и синего цветов на переднем плане (текст) и фоне.
/* 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
источник
Самый простой способ сделать это:
#include <stdlib.h> system("Color F3");
Где «F» - это код цвета фона, а 3 - код цвета текста.
Поиграйте с ним, чтобы увидеть другие цветовые комбинации:
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;
Примечание: я тестировал только в Windows. Работает. Как уже отмечалось, это не кроссплатформенный вариант, он не будет работать в системах Linux.
источник
Вам не нужно использовать какую-либо библиотеку. Только система записи («цвет 4f»);
источник
Не используйте «system (« 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 - это пример использования цветов в консоли.
источник