字符串打印顏色
適用於 調試輸出
printf() 或者 qDebug() 等等
語法字符串[共10個字符長度]:
控制字符 | 字符 | 顯示方式字符 | 字符 | 前景色字符 | 字符 | 背景色代字符 | 字符 | |
---|---|---|---|---|---|---|---|---|
字符 | ESC |
[ |
1個字符數 | ; |
2個字符數 | ; |
2個字符數 | m |
ASCII碼 | 0x1b | 0x5b | [0x30-0x38] | 0x3b | 0x33[0x30-0x37] | 0x3b | 0x34[0x30-0x37] | 0x6d |
字符串中轉義字符
對於 ASCII 編碼,0~31(十進制)範圍內的字符爲控制字符
,它們都是看不見的,不能在顯示器上顯示,甚至無法從鍵盤輸入,只能用轉義字符的形式來表示
轉義字符的初衷是用於 ASCII 編碼,所以它的取值範圍有限:
- 八進制形式的轉義字符最多後跟三個數字,也即\ddd,最大取值是\177;
- 十六進制形式的轉義字符最多後跟兩個數字,也即\xdd,最大取值是\x7f。
所以 控制字符Esc
ASCII碼錶示爲 16進制 0x1b
或者 8進制033
,在c語言中字符轉義表示爲 \x1B
或者 \033
1 字符串 8進製表示法
\033[顯示方式;前景色;背景色m
//--8
qDebug()<<"\033[1;34;43m"; //--設置屬性
qDebug()<<"color text "; //--帶顏色輸出的文本
qDebug()<<"\033[0;m"; //--關閉屬性
2 字符串 16進製表示法
\x1b[顯示方式;前景色;背景色m
//--16
qDebug()<<"\x1b[1;34;43m"; //--設置屬性
qDebug()<<"color text "; //--帶顏色輸出的文本
qDebug()<<"\033[0;m"; //--關閉屬性
3 字符串 ASCII碼數組表示法
直接使用計算機內存中表示數據的ASCII碼代替
char str[10]={0x1b,0x5b,0x31,0x3b,0x33,0x34,0x3b,0x34,0x33,0x6d};
qDebug()<<str<<"str[10]"; //--設置屬性
for (int i=0;i<10;i++) {
qDebug("str[%d]=0x%02x",i,str[i]); //--帶顏色輸出的文本
}
qDebug()<<"\x1b[0m"; //--關閉屬性
附錄表:
顯示方式
控制屬性 | 1字符代碼 | ASCII碼 |
---|---|---|
重置所有屬性 | 0 | 0x30 |
高亮/加粗 | 1 | 0x31 |
暗淡 | 2 | 0x32 |
下劃線 | 4 | 0x34 |
閃爍 | 5 | 0x35 |
反轉 | 7 | 0x37 |
隱藏 | 8 | 0x38 |
前景色
前景色 | 2字符代碼 | ASCII碼 |
---|---|---|
黑色 | 30 | 0x33,0x30 |
紅色 | 31 | 0x33,0x31 |
綠色 | 32 | 0x33,0x32 |
黃色 | 33 | 0x33,0x33 |
藍色 | 34 | 0x33,0x34 |
品紅 | 35 | 0x33,0x35 |
青色 | 36 | 0x33,0x36 |
白色 | 37 | 0x33,0x37 |
背景色
背景色 | 2字符代碼 | ASCII碼 |
---|---|---|
黑色 | 40 | 0x34,0x30 |
紅色 | 41 | 0x34,0x31 |
綠色 | 42 | 0x34,0x32 |
黃色 | 43 | 0x34,0x33 |
藍色 | 44 | 0x34,0x34 |
品紅 | 45 | 0x34,0x35 |
青色 | 46 | 0x34,0x36 |
白色 | 47 | 0x34,0x37 |