# 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 は単一のヘッダーのみのライブラリです。インクルード フォルダー内のrang.hpp
プロジェクト ソース ツリーに直接配置するか、プロジェクトからアクセス可能な場所に配置します。
または、conan パッケージ マネージャーを使用する場合は、次の手順に従います。
プロジェクトのconanfile.txt
ファイルのrequireセクションに、 rangへの参照を追加します。
[requires]
rang/3.1.0@rang/stable
conan のインストール コマンドを実行します。
conan install
Rang は、 iostream オブジェクト ( cout
/ clog
/ cerr
を使用して、出力テキストに属性を適用します。 rang はWindows と UNIX の両方のシステムをサポートすることを目的としているため、OS 固有の詳細を処理し、統一されたインターフェイスを提供しようとします。異なる OS バージョン間の非互換性のため、すべてのシステムですべての種類の属性がサポートされているわけではないため、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( Default ) に戻ります。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 は干渉せず、決定はライブラリ ユーザーに任せます。この会話を必ず読んで、ここにあるサンプルコードをチェックしてください。