2016-06-21 2 views
0

Это 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, но вывод неожиданно. Что предлагает вывод?

ответ

2

Выходной сигнал предполагает, что зависит от терминала, который интерпретирует специальный выходной код выхода, но ваш терминал не интерпретирует эти коды.

Это не стандарт C++, BTW.

+0

Тогда что это? – dlpsankhla

+0

@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 –

+0

@dlpsankhla Если вы используете Windows 10, то есть встроенная поддержка. Проверьте этот вариант: http://www.nivot.org/blog/post/2016/02/04/Windows-10-TH2-%28v1511%29-Console-Host-Enhancements –