C/C++

Цветной фон и текст в консольном приложении

Как пишут здесь, крче :) напомните мне пожалуйста, как сделать цветной фон (не чёрный) и текст в консоли, где работает приложение.
Можете скинуть какой-нибудь простенький исходник для примера, чтобы было читабельно и понятно.
Серёжа Хохлов
Серёжа Хохлов
7 402
Вот этот исходник погоняй, посмотришь, какие есть цвета и диапозоны.


#include<stdio.h>
#include<stdlib.h>//пауза для Windows
int main()
{
for(int count=0, ftype = 0; ftype <= 9; ftype ++)
for(int fColor = 30; fColor <= 37; fColor ++)
for(int bColor = 40; bColor <= 47; bColor ++)
{
count++;
printf("\033[%d;%d;%dm My color text \033[m",ftype, fColor,bColor);
if(count%10 == 0) printf("\n");
}
system("pause"); //пауза для windows

return 0;
}

ВП
Валера Поповкин
37 945
Лучший ответ
Зависит от используемой операционной системы (Linix и Windows10 после обновления build 1809 + Windows10 до этого обновления, где этот костыль пофиксен и все предыдущие версии Windows).
Делается через специальные ESC-коды
 #include 
int main()
{
printf("\x1b[31;45m что-то пошло не так...:) \x1b[0m\n ");
printf("\x1b[31;42m да не, вроде норм..:) \x1b[0m\n ");
return 0;
}
Для прежних версий Windows были ограничения, тянущиеся со времен MS-Dos восьмидесятых годов, и там ESC-коды не работали, приходилось использовать костыли (специальные резидентные программы, которые перехватывали вывод в консоль, искали там esc-код и как-то там преобразовывали в видеопамяти напрямую). Без этих костылей коды выводились в виде "стрелочек вправо", все форматирование съезжало и никакого цвета не было.
Во-первых в IDE можно устанавливать цвет текста и бэкграунда -там есть для этого ограниченный набор тем. Во-вторых, можно воспользоваться командами system как в таком вот калькуляторе:
#include <iostream>
using namespace std; int main()
{ system("color b5"); system("cls"); char s;
double x, y; while (true) { cout << ">>> ";
cin >> x >> s >> y; switch (s)
{ case '+': cout << x + y << endl; break;
case '-': cout << x - y << endl; break;
case '*': cout << x * y << endl; break;
case '/': cout << x / y << endl; break;
default: cout << "Unknown operation" << endl; } } }
В-третьих, можно, например, управлять цветом бэкграунда командой system, а цветами текста и эффектами (жирность, подчёркивание и т.д.) спецлитерами: "\x1b[31m" -это окраска в красный, а это в зелёный "\033[32m" (\x1b -это то же самое, что и \033). Но это где-то работает, а в каких-нибудь дурацких приложениях типа "C coding" или "C++ coding" может ведь и не работать...
Евгений Остроумов А не, у меня в "Coding C++" на телефоне цвета и даже спецэффекты нормально работают, там зато команды system почему-то не работают...