C ++ ile konsola nasıl renkli metin yazabilirim? Yani farklı renklerle farklı metinleri nasıl yazabilirim?
C ++ ile konsola nasıl renkli metin yazabilirim? Yani farklı renklerle farklı metinleri nasıl yazabilirim?
Yanıtlar:
Konsol Metninize Biraz Renk Katın
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;
}
Karakter Nitelikleri Burada "k" değerinin nasıl yorumlanacağı anlatılmaktadır.
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
#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
Standart C ++ 'renk' kavramına sahip değildir. Yani ne istediğiniz işletim sistemine bağlıdır.
Windows için SetConsoleTextAttribute işlevini kontrol edebilirsiniz .
* Nix'te ANSI kaçış dizilerini kullanmanız gerekir .
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);
için setler rengi Parlak Beyaz , değil Beyaz . 7 - Beyaz. ve 15 - Parlak Beyaz
Windows 10'da kaçış dizilerini şu şekilde kullanabilirsiniz:
#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;
Bir Windows konsol penceresinden bahsettiğinizi varsayarsak, MSDN Kitaplığı belgelerinde konsol işlevlerine bakın.
Aksi takdirde veya daha genel olarak konsola bağlıdır. Renkler, C ++ kitaplığı tarafından desteklenmez. Ancak konsol kullanımı için bir kitaplık renkleri destekleyebilir / destekleyecektir. Örneğin, google "ncurses renkleri".
Bağlı seri terminaller ve terminal emülatörleri için, "kaçış dizileri" çıktısı vererek şeyleri kontrol edebilirsiniz. Bunlar genellikle ASCII 27 ile başlar (ASCII'deki kaçış karakteri). Bir ANSI standardı ve birçok özel şema var.
Gerçekten ne yapmak istediğinizden emin değilim, ancak tahminimce C ++ programınızın konsolda renkli metin çıktısını almasını istiyorsunuz, değil mi? Windows'u bilmiyorum, ancak tüm Unices'de (Mac OS X dahil), bunun için ANSI kaçış dizilerini kullanırsınız.
Windows'ta, ön planda (metin) ve arka planda kırmızı, yeşil ve mavinin herhangi bir kombinasyonunu kullanabilirsiniz.
/* 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;
Yapabileceğiniz en basit yol:
#include <stdlib.h>
system("Color F3");
Burada "F", arka plan rengi için kod ve 3, metin rengi için koddur.
Diğer renk kombinasyonlarını görmek için onunla uğraşın:
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;
Not: Yalnızca Windows üzerinde test ettim. İşler. Belirtildiği gibi, bu çapraz platform değildir, Linux sistemlerinde çalışmayacaktır.
Herhangi bir kitaplık kullanmanıza gerek yok. Sadece sistemi yazın ("renk 4f");
Tüm ekranın renkle doldurulmasını istemiyorsanız "system (" Color… ")" kullanmayın. Renkli metin oluşturmak için gerekli olan komut dosyası budur:
#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;
}
Burada cplusplus örneği , konsolda renklerin nasıl kullanılacağına bir örnektir.