# 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++, системного заголовка unistd.h в unix и системных заголовков windows.h и io.h в системах на базе Windows. Другими словами, вам не нужны никакие сторонние зависимости.
rang — это единая библиотека только для заголовков. Поместите rang.hpp в папку include непосредственно в дерево исходного кода проекта или куда-нибудь, доступное из вашего проекта.
Или, если вы используете менеджер пакетов conan, выполните следующие действия:
Добавьте ссылку на rand в раздел require файла conanfile.txt вашего проекта:
[requires]
rang/3.1.0@rang/stable
Запустите команду установки Конана:
conan install
Rang использует объекты iostream — cout / clog / cerr для применения атрибутов к выходному тексту. Поскольку Rang стремится поддерживать как Windows, так и Unix-подобные системы, он заботится о конкретных деталях ОС и пытается предоставить единый интерфейс. Из-за несовместимости разных версий ОС не все виды атрибутов поддерживаются в каждой системе, поэтому Rang попытается пропустить те, которые могут создавать мусор (вместо того, чтобы вставлять случайные escape-коды 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, в противном случае возвращается к собственному ( по умолчанию )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 | да | да |
Проверьте значение переменной env TERM . Затем откройте проблему здесь и обязательно укажите значение TERM вместе с именем вашего терминала.
cout / cerr / clog rdbuf? Rang не вмешивается, если вы попытаетесь перенаправить cout / cerr / clog куда-то еще, и оставляет решение за пользователем библиотеки. Обязательно прочтите этот разговор и ознакомьтесь с примером кода здесь.