Если вы хотите встроить управляющие коды терминала ANSI в ваш файл, тогда обязательно.
Вот пример использования Ruby для псевдокода.(Синтаксис # {expr} просто форматирует expr с помощью% s или% d и интерполирует его в строку.)
def colorize s, code
"#{code}#{s}\e[0m"
end
def color s, n
colorize s, "\e[#{31 + n % 7}m"
end
Вы можете использовать curses или termcap, но это будет намного сложнее исегодня не нужно, так как каждое окно терминала Linux (и Mac) будет без проблем использовать коды ANSI.
Если вы затем просмотрите этот файл или прямой вывод с помощью less (1), то вам захочетсяиспользуйте less -R
.
Обновления: C ++
#include <iostream>
using namespace std;
void color(const char *s, int n) {
cout << "\e[" << (31 + n % 7) << "m" << s << "\e[0m";
}
int main() {
color("How now", 0);
color(" brown cow", 1);
color(" Now is the", 2);
color(" time.", 3);
cout << endl;
return 0;
}
И C99:
#include <stdio.h>
void colorize(const char *s, const char *code) {
printf("%s%s\e[0m", code, s);
}
void color(const char *s, int n) {
char t[32];
sprintf(t, "\e[%dm", 31 + n % 7);
colorize(s, t);
}
int main(void) {
color("How now", 0);
color(" brown cow", 1);
color(" Now is the", 2);
color(" time.\n", 3);
return 0;
}