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