Bagaimana saya bisa menulis teks berwarna ke konsol dengan C ++? Artinya, bagaimana saya bisa menulis teks berbeda dengan warna berbeda?
Bagaimana saya bisa menulis teks berwarna ke konsol dengan C ++? Artinya, bagaimana saya bisa menulis teks berbeda dengan warna berbeda?
Jawaban:
Tambahkan sedikit Warna ke Teks Konsol Anda
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;
}
Atribut Karakter Berikut adalah bagaimana nilai "k" diinterpretasikan.
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
Standar C ++ tidak memiliki pengertian tentang 'warna'. Jadi apa yang Anda tanyakan tergantung pada sistem operasi.
Untuk Windows, Anda dapat memeriksa fungsi SetConsoleTextAttribute .
Di * nix, Anda harus menggunakan urutan 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);
mengatur warna ke Putih Cerah , bukan Putih . 7 - Putih. dan 15 - Putih Cerah
Di Windows 10 Anda dapat menggunakan urutan escape dengan cara ini:
#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;
Dengan asumsi Anda berbicara tentang jendela konsol Windows, cari fungsi konsol di dokumentasi Perpustakaan MSDN.
Jika tidak, atau lebih umum, itu tergantung pada konsol. Warna tidak didukung oleh pustaka C ++. Tapi perpustakaan untuk penanganan konsol mungkin / akan mendukung warna. Misalnya google "warna ncurses".
Untuk terminal serial dan emulator terminal yang terhubung, Anda dapat mengontrol berbagai hal dengan mengeluarkan "urutan escape". Ini biasanya dimulai dengan ASCII 27 (karakter escape di ASCII). Ada standar ANSI dan banyak skema khusus.
Saya tidak yakin apa yang sebenarnya ingin Anda lakukan, tetapi tebakan saya adalah Anda ingin program C ++ Anda menampilkan teks berwarna di konsol, bukan? Tidak tahu tentang Windows, tetapi pada semua Unix (termasuk Mac OS X), Anda cukup menggunakan urutan escape ANSI untuk itu.
Di Windows, Anda dapat menggunakan kombinasi warna merah hijau dan biru di latar depan (teks) dan latar belakang.
/* 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;
Cara paling sederhana yang dapat Anda lakukan adalah:
#include <stdlib.h>
system("Color F3");
Dimana "F" adalah kode untuk warna latar dan 3 adalah kode untuk warna teks.
Berantakan dengannya untuk melihat kombinasi warna lain:
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;
Catatan: Saya hanya menguji di Windows. Bekerja. Seperti yang ditunjukkan, ini bukan lintas platform, ini tidak akan berfungsi pada sistem Linux.
Anda tidak perlu menggunakan perpustakaan apa pun. Hanya sistem tulis saja ("color 4f");
Jangan gunakan "sistem (" Warna… ")" jika Anda tidak ingin seluruh layar diisi dengan warna. Ini adalah skrip yang dibutuhkan untuk membuat teks berwarna:
#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;
}
Berikut contoh cplusplus adalah contoh bagaimana menggunakan warna pada konsol.