Termcolor is a header-only C++ library for printing colored messages to the terminal. Written just for fun with a help of the Force; Ihor Kalnytskyi (2013).
npm install termcolor.cxxTERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES macro to trick termcolor into using ANSI color codes.
bash
$ npm i termcolor.cxx
`
And then include termcolor.hpp as follows:
`cxx
// main.cxx
#include // or, termcolor/termcolor.hpp
int main() { / ... / }
`
Finally, compile while adding the path node_modules/termcolor.cxx to your compiler's include paths.
`bash
$ clang++ -I./node_modules/termcolor.cxx main.cxx # or, use g++
$ g++ -I./node_modules/termcolor.cxx main.cxx
`
You may also use a simpler approach with the cpoach tool, which automatically adds the necessary include paths of all the installed dependencies for your project.
`bash
$ cpoach clang++ main.cxx # or, use g++
$ cpoach g++ main.cxx
`
* You can also use vcpkg to install the library:
`sh
$ vcpkg install termcolor
`
* Or if you are on macOS, you can use Homebrew:
`sh
$ brew install termcolor
`
* For up-to-date information about existing packages, refer to the following picture:

---
How to use?
It’s very easy to use. The idea is built upon C++ stream manipulators.
A typical “Hello World” application looks like this:
`cpp
#include
#include
int main(int /argc/, char* /argv*/)
{
std::cout << termcolor::red << "Hello, "; // 16 colors
std::cout << termcolor::color<100> << "Colorful "; // 256 colors
std::cout << termcolor::color<211, 54, 130> << "World!"; // true colors
std::cout << std::endl;
return 0;
}
`
The application above prints a string using different colors. There is one caveat though:
you must not forget to reset colors, otherwise they will be applied to other prints as well.
`cpp
std::cout << termcolor::red << "Hello, Colorful World!" << std::endl;
std::cout << "I'm RED too!" << std::endl;
`
The correct version of the code above should look like this:
`cpp
std::cout << termcolor::red << "Hello, Colorful World!" << termcolor::reset << std::endl;
std::cout << termcolor::reset << "Here I'm!" << std::endl;
`
By default, Termcolor ignores any colors for non-TTY streams (e.g. std::stringstream), so the following snippet:
`cpp
std::stringstream ss;
ss << termcolor::red << "unicorn";
std::cout << ss.str();
`
will print “unicorn” using the default color, not red.
To change this behavior, use the termcolor::colorize manipulator, which enforces colors no matter what.
---
What manipulators are supported?
The manipulators are divided into four groups:
* foreground, which changes text color
* background, which changes text background color
* attributes, which change text style (bold, underline, etc.)
* control, which change termcolor’s behavior
There are also color manipulators for
16 colors,
256 colors,
and true colors palettes.
> Note
>
> While termcolor supports true color, the terminal emulator you use must also support true color.
> Please ensure it is supported before filing an issue.
---
Foreground manipulators
$3
1. termcolor::grey
2. termcolor::red
3. termcolor::green
4. termcolor::yellow
5. termcolor::blue
6. termcolor::magenta
7. termcolor::cyan
8. termcolor::white
9. termcolor::bright_grey
10. termcolor::bright_red
11. termcolor::bright_green
12. termcolor::bright_yellow
13. termcolor::bright_blue
14. termcolor::bright_magenta
15. termcolor::bright_cyan
16. termcolor::bright_white
$3
* termcolor::color<256_COLOR_CODE>
$3
* termcolor::color
---
Background manipulators
$3
1. termcolor::on_grey
2. termcolor::on_red
3. termcolor::on_green
4. termcolor::on_yellow
5. termcolor::on_blue
6. termcolor::on_magenta
7. termcolor::on_cyan
8. termcolor::on_white
9. termcolor::on_bright_grey
10. termcolor::on_bright_red
11. termcolor::on_bright_green
12. termcolor::on_bright_yellow
13. termcolor::on_bright_blue
14. termcolor::on_bright_magenta
15. termcolor::on_bright_cyan
16. termcolor::on_bright_white
$3
* termcolor::on_color<256_COLOR_CODE>
$3
* termcolor::on_color
---
Attribute manipulators
(Windows API does not support these manipulators except for underline)
1. termcolor::bold
2. termcolor::dark
3. termcolor::italic
4. termcolor::underline
5. termcolor::blink
6. termcolor::reverse
7. termcolor::concealed
8. termcolor::crossed
---
Control manipulators
(Windows API does not support these manipulators)
1. termcolor::colorize
2. termcolor::nocolorize
---
Caveats
1. On Windows, due to internal usage of , the global namespace may be polluted with min/max macros.
If such an effect is undesirable, consider using:
`cpp
#define NOMINMAX
#include
``