Sebagian besar terminal menghormati urutan warna ASCII. Mereka bekerja dengan mengeluarkan ESC
, diikuti oleh [
, lalu daftar nilai warna yang dipisahkan titik koma, lalu m
. Ini adalah nilai umum:
Special
0 Reset all attributes
1 Bright
2 Dim
4 Underscore
5 Blink
7 Reverse
8 Hidden
Foreground colors
30 Black
31 Red
32 Green
33 Yellow
34 Blue
35 Magenta
36 Cyan
37 White
Background colors
40 Black
41 Red
42 Green
43 Yellow
44 Blue
45 Magenta
46 Cyan
47 White
Jadi menghasilkan "\033[31;47m"
harus membuat warna depan terminal (teks) merah dan warna latar belakang putih.
Anda dapat membungkusnya dengan baik dalam bentuk C++:
enum Color {
NONE = 0,
BLACK, RED, GREEN,
YELLOW, BLUE, MAGENTA,
CYAN, WHITE
}
std::string set_color(Color foreground = 0, Color background = 0) {
char num_s[3];
std::string s = "\033[";
if (!foreground && ! background) s += "0"; // reset colors if no params
if (foreground) {
itoa(29 + foreground, num_s, 10);
s += num_s;
if (background) s += ";";
}
if (background) {
itoa(39 + background, num_s, 10);
s += num_s;
}
return s + "m";
}
Ini adalah versi kode di atas dari @nightcracker, menggunakan stringstream
bukannya itoa
. (Ini berjalan menggunakan clang++, C++11, OS X 10.7, iTerm2, bash)
#include <iostream>
#include <string>
#include <sstream>
enum Color
{
NONE = 0,
BLACK, RED, GREEN,
YELLOW, BLUE, MAGENTA,
CYAN, WHITE
};
static std::string set_color(Color foreground = NONE, Color background = NONE)
{
std::stringstream s;
s << "\033[";
if (!foreground && ! background){
s << "0"; // reset colors if no params
}
if (foreground) {
s << 29 + foreground;
if (background) s << ";";
}
if (background) {
s << 39 + background;
}
s << "m";
return s.str();
}
int main(int agrc, char* argv[])
{
std::cout << "These words should be colored [ " <<
set_color(RED) << "red " <<
set_color(GREEN) << "green " <<
set_color(BLUE) << "blue" <<
set_color() << " ]" <<
std::endl;
return EXIT_SUCCESS;
}
Anda mungkin ingin melihat kode kontrol VT100.
Menggunakan Rsync sertakan dan kecualikan opsi untuk menyertakan direktori dan file berdasarkan pola
Matikan mesin Windows dari terminal linux