Это source.cpp← [0м ← [42m ← [37mIf в консоли ouptut
#include "color.hpp"
#include<conio.h>
int main()
{
std::cout << std::endl
<< color::style::reset << color::bg::green << color::fg::gray
<< "If you're seeing green bg, then color works!"
<< color::style::reset << std::endl;
_getch();
return 0;
}
И это фрагмент кода из color.hpp:
template <typename T>
using enable = typename std::enable_if
<
std::is_same<T, color::style>::value ||
std::is_same<T, color::fg>::value ||
std::is_same<T, color::bg>::value ||
std::is_same<T, color::fgB>::value ||
std::is_same<T, color::bgB>::value,
std::ostream &
>::type;
template <typename T>
inline enable<T> operator<<(std::ostream &os, T const value)
{
std::streambuf const *osbuf = os.rdbuf();
return ((supportsColor()) && (isTerminal(osbuf)))
? os << "\033[" << static_cast<int>(value) << "m"
: os;
}
}
На самом деле это библиотека только для заголовка для создания красочной консоли. Я попытался скомпилировать этот проект в качестве консольного приложения с поддержкой C++ 11, но вывод неожиданно. Что предлагает вывод?
Тогда что это? – dlpsankhla
@dlpsankhla C++ не имеет понятия о том, какой у вас терминал и как он может интерпретировать ваш вывод. Эквивалентная аналогия будет открывать файл электронной таблицы с помощью текстового редактора. Вы можете видеть данные, но текстовый редактор не интерпретирует данные и не отображает их как строки и столбцы. Возможно, вы ищете http://stackoverflow.com/questions/16755142/how-to-make-win32-console-recognize-ansi-vt100-escape-sequences или http://stackoverflow.com/questions/2294281/how -to-detect-ansi-color-escape-codes-in-windows7-64-bit-command-terminal –
@dlpsankhla Если вы используете Windows 10, то есть встроенная поддержка. Проверьте этот вариант: http://www.nivot.org/blog/post/2016/02/04/Windows-10-TH2-%28v1511%29-Console-Host-Enhancements –