# include " rang.hpp "
using namespace std ;
using namespace rang ;
int main ()
{
cout << " Plain old text "
<< style:: bold << " Rang styled text!! "
<< style::reset << endl;
}
rang僅依賴 C++ 標準函式庫、unix 上的unistd.h
系統頭檔以及基於 Windows 的系統上的windows.h
和io.h
系統頭檔。換句話說,您不需要任何第三方依賴項。
rang是一個僅包含頭檔的庫。將 include 資料夾中的rang.hpp
直接放入專案原始碼樹或專案可存取的位置。
或者,如果您使用 conan 套件管理器,請按照以下步驟操作:
將對rang的引用加入到專案conanfile.txt
檔案的require部分:
[requires]
rang/3.1.0@rang/stable
運行 conan 的安裝命令:
conan install
Rang使用 iostream 物件 - cout
/ clog
/ cerr
將屬性應用於輸出文字。由於rang旨在支援 Windows 和類別 UNIX 系統,因此它會處理作業系統特定的細節並嘗試提供統一的介面。由於不同作業系統版本之間的不相容性,並非每個系統都支援所有類型的屬性,因此 rang 將嘗試跳過可能產生垃圾的屬性(而不是在串流上推送隨機 ANSI 轉義碼)。 tty 的偵測也在內部處理,因此您無需檢查應用程式使用者是否可能將輸出重新導向至檔案。
需要非 ansi 終端支援嗎?查看 Termdb,它幾乎支援所有終端及其功能。
除了設定文字屬性之外,您還可以透過這些方法要求 rang 覆寫其預設行為 -
void rang::setControlMode (rang::control);
rang::control
所在位置
control::Auto
- 自動偵測終端是否支援顏色(預設)control::Off
- 完全關閉顏色control::Force
- 即使終端不支援顏色或輸出重定向到非終端,也強制使用顏色 void rang::setWinTermMode (rang::winTerm);
rang::winTerm
位置
winTerm::Auto
- 檢查較新的視窗並選擇 Ansi,否則回退到 Native(預設)winTerm::Native
- 所有版本的 Windows 都支援此方法,但支援的屬性較少winTerm::Ansi
- 此方法在較新版本的 Windows 中受支持,並支援豐富的屬性下面列出了支援的屬性及其相容性 -
文字樣式:
程式碼 | Linux/Win/其他 | 老贏 |
---|---|---|
rang::style::bold | 是的 | 是的 |
rang::style::dim | 是的 | 不 |
rang::style::italic | 是的 | 不 |
rang::style::underline | 是的 | 不 |
rang::style::blink | 不 | 不 |
rang::style::rblink | 不 | 不 |
rang::style::reversed | 是的 | 是的 |
rang::style::conceal | 或許 | 是的 |
rang::style::crossed | 是的 | 不 |
文字顏色:
程式碼 | Linux/Win/其他 | 老贏 |
---|---|---|
rang::fg::black | 是的 | 是的 |
rang::fg::red | 是的 | 是的 |
rang::fg::green | 是的 | 是的 |
rang::fg::yellow | 是的 | 是的 |
rang::fg::blue | 是的 | 是的 |
rang::fg::magenta | 是的 | 是的 |
rang::fg::cyan | 是的 | 是的 |
rang::fg::gray | 是的 | 是的 |
背景顏色:
程式碼 | Linux/Win/其他 | 老贏 |
---|---|---|
rang::bg::black | 是的 | 是的 |
rang::bg::red | 是的 | 是的 |
rang::bg::green | 是的 | 是的 |
rang::bg::yellow | 是的 | 是的 |
rang::bg::blue | 是的 | 是的 |
rang::bg::magenta | 是的 | 是的 |
rang::bg::cyan | 是的 | 是的 |
rang::bg::gray | 是的 | 是的 |
明亮的前景色:
程式碼 | Linux/Win/其他 | 老贏 |
---|---|---|
rang::fgB::black | 是的 | 是的 |
rang::fgB::red | 是的 | 是的 |
rang::fgB::green | 是的 | 是的 |
rang::fgB::yellow | 是的 | 是的 |
rang::fgB::blue | 是的 | 是的 |
rang::fgB::magenta | 是的 | 是的 |
rang::fgB::cyan | 是的 | 是的 |
rang::fgB::gray | 是的 | 是的 |
明亮的背景顏色:
程式碼 | Linux/Win/其他 | 老贏 |
---|---|---|
rang::bgB::black | 是的 | 是的 |
rang::bgB::red | 是的 | 是的 |
rang::bgB::green | 是的 | 是的 |
rang::bgB::yellow | 是的 | 是的 |
rang::bgB::blue | 是的 | 是的 |
rang::bgB::magenta | 是的 | 是的 |
rang::bgB::cyan | 是的 | 是的 |
rang::bgB::gray | 是的 | 是的 |
重設樣式/顏色:
程式碼 | Linux/Win/其他 | 老贏 |
---|---|---|
rang::style::reset | 是的 | 是的 |
rang::fg::reset | 是的 | 是的 |
rang::bg::reset | 是的 | 是的 |
檢查您的環境變數TERM
的值。然後在此處打開一個問題,並確保提及TERM
的值以及您的終端名稱。
cout
/ cerr
/ clog
rdbuf?如果您嘗試將cout
/ cerr
/ clog
重定向到其他地方,Rang 不會幹擾,並將決定權留給庫使用者。確保您已閱讀此對話並查看此處的範例程式碼。