生活随笔
收集整理的這篇文章主要介紹了
Linux C/C++ 如何输出彩色字体
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先舉個例子:
#include <iostream>int main()
{std
::cout
<<"\033[33mHello \033[34mworld!\033[0m"<<std
::endl
;return 0;
}
執行以上代碼,你將會看到紅色的Hello和藍色的world!
觀察上述代碼,你會發現我用了三個\033[*m
這就是Linux輸出彩色字體的關鍵
下表就是每個類似的字符串所代表的意思 (此表轉自此處)
\033[0m 關閉所有屬性
\033[1m 高亮
\033[2m 亮度減半
\033[3m 斜體
\033[4m 下劃線
\033[5m 閃爍
\033[6m 快閃
\033[7m 反顯
\033[8m 消隱
\033[9m 中間一道橫線
10-19 關于字體的
21-29 基本與1-9正好相反
30-37 設置前景色
40-47 設置背景色
30:黑
31:紅
32:綠
33:黃
34:藍
35:紫
36:深
37:白
38 打開下劃線,設置默認前景色
39 關閉下劃線,設置默認前景色
40 黑色背景
41 紅色背景
42 綠色背景
43 棕色背景
44 藍色背景
45 品紅背景
46 孔雀藍背景
47 白色背景
48 不知道什么東西
49 設置默認背景色
50-89 沒用
90-109 又是設置前景背景的,比之前的顏色淺
\033[nA 光標上移n行
\033[nB 光標下移n行
\033[nC 光標右移n行
\033[nD 光標左移n行
\033[y;xH設置光標位置
\033[2J 清屏
\033[K 清除從光標到行尾的內容
\033[s 保存光標位置
\033[u 恢復光標位置
\033[?25l 隱藏光標
\033[?25h 顯示光標
根據上表,就可以寫一個函數,做到切換各種顏色
代碼如下 (只支持一些常用的顏色)
#ifndef SETCOLOR_H
#define SETCOLOR_Hconst int F_BLACK
= 0x01
const int F_RED
= 0x02
const int F_GREEN
= 0x03
const int F_YELLOW
= 0x04
const int F_BLUE
= 0x05
const int F_DPURPLE
= 0x06
const int F_WHITE
= 0x07 const int B_BLACK
= 0x08
const int B_RED
= 0x10
const int B_GREEN
= 0x18
const int B_BROWN
= 0x80
const int B_BLUE
= 0x88
const int B_WHITE
= 0x90
bool setColor(int color
);
void resetFColor();
void resetBColor(); #endif
#include "color.h"
#include <iostream>bool setColor(int color
)
{bool ret
= true;int fore
= color
%8; int back
= (color
/8)*8; switch (fore
){case F_BLACK
:std
::cout
<<"\033[30m";break;case F_RED
:std
::cout
<<"\033[31m";break;case F_GREEN
:std
::cout
<<"\033[32m";break;case F_YELLOW
:std
::cout
<<"\033[33m";break;case F_BLUE
:std
::cout
<<"\033[34m";break;case F_PURPLE
:std
::cout
<<"\033[35m";break;case F_WHITE
:std
::cout
<<"\033[37m";break;default:ret
= false;}switch (back
){case B_BLACK
:std
::cout
<<"\033[40m";break;case B_RED
:std
::cout
<<"\033[41m";break;case B_GREEN
:std
::cout
<<"\033[42m";break;case B_BROWN
:std
::cout
<<"\033[43m";break;case B_BLUE
:std
::cout
<<"\033[44m";break;case B_WHITE
:std
::cout
<<"\033[47m";break;default:ret
= false;}return ret
;
}
void resetFColor()
{std
::cout
<<"\033[39m";}
void resetBColor()
{std
::cout
<<"\033[49m";}
注:本段代碼未經測試,可能會有錯誤,請諒解!
最后,我們來編譯一下這個文件不會手動編譯的朋友們注意了
使用指令$ sudo apt-get install gcc g++來安裝C和C++ (沒有用Ubuntu的朋友們百度找找C和C++的編譯器吧)進入那兩個文件存放的目錄使用指令$ g++ -c -o test.o test.cpp來生成目標文件 (假設那兩個文件名為test.h和test.cpp)使用指令$ gcc -fPIC -shared test.o來生成動態鏈接庫使用指令$ ar rcs -o libtest.a test.so來生成靜態庫 (ar在安裝gcc和g++時已經安裝好)如果你編輯好了main函數放在main.cpp里,則可以進行后兩步使用指令g++ -c -o main.o main.cpp生成目標文件如果你使用動態鏈接庫,使用指令gcc -o main -L. -ltest main.cpp生成main (libtest.so必須放在main的所在目錄下,否則main.exe失效)如果你使用靜態庫,使用指令gcc -o main main.o libtest.a生成main (libtest.a不一定一直放在main的所在目錄下,因為main不依賴)
總結
以上是生活随笔為你收集整理的Linux C/C++ 如何输出彩色字体的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。