# 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 不会干扰,并将决定权留给库用户。确保您已阅读此对话并查看此处的示例代码。