Reputation: 35
I'm making a calendar program for my c++ class and I was just wondering if there was a way to change color of certain days in the program (for example, christmas, new years, weekends, would all be different colors) if it is not possible can i at least bold or something...
here is my code
char *month_name[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
char *month_underline[12] = {"-------", "--------", "-----", "-----", "---", "----", "----", "------", "---------", "-------", "--------", "--------"};
char *week_name[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int days = 1;
int days_max;
int i, j, k;
for(i = 0; i < 12; i++)
{
cout << "--------------------------------------------------------------------------------";
cout << '\n' << month_name[i] << '\n';
cout << month_underline[i] << "\n\n";
for (j = 0; j < 7; j++)
{
cout << week_name[j] << " ";
}
cout << "\n\n";
if (i == 0 || i == 2 || i == 4 || i == 6 || i == 7 || i == 9 || i == 11) //i is the number of the month minus 1 (jan = 0, feb = 1, etc.)
days_max = 32;
else if (i == 3 || i == 5 || i == 8 || i == 10)
days_max = 31;
else if (i == 1)
days_max = 29;
for (days = 1; days < days_max; days++)
{
if (i == 0 || i == 9)
{
if (days == 1)
{
cout << " ";
cout << setw(4) << days << " ";
}
else if (days == 6 || days == 13 || days == 20 || days == 27)
{
cout << "\n\n";
cout << setw(4) << days << " ";
}
else
cout << setw(4) << days << " ";
}
if (i == 1 || i == 2 || i == 10)
{
if (days == 1)
{
cout << " ";
cout << setw(4) << days << " ";
}
else if (days == 3 || days == 10 || days == 17 || days == 24 || days == 31)
{
cout << "\n\n";
cout << setw(4) << days << " ";
}
else
cout << setw(4) << days << " ";
}
if (i == 3 || i == 6)
{
if (days == 1)
{
cout << " ";
cout << setw(4) << days << " ";
}
else if (days == 7 || days == 14 || days == 21 || days == 28)
{
cout << "\n\n";
cout << setw(4) << days << " ";
}
else
cout << setw(4) << days << " ";
}
if (i == 4)
{
if (days == 1)
{
cout << " ";
cout << setw(4) << days << " ";
}
else if (days == 5 || days == 12 || days == 19 || days == 26)
{
cout << "\n\n";
cout << setw(4) << days << " ";
}
else
cout << setw(4) << days << " ";
}
if (i == 5)
{
if (days == 1)
{
cout << " ";
cout << setw(4) << days << " ";
}
else if (days == 2 || days == 9 || days == 16 || days == 23 || days == 30)
{
cout << "\n\n";
cout << setw(4) << days << " ";
}
else
cout << setw(4) << days << " ";
}
if (i == 7)
{
if (days == 1)
{
cout << " ";
cout << setw(4) << days << " ";
}
else if (days == 4 || days == 11 || days == 18 || days == 25)
{
cout << "\n\n";
cout << setw(4) << days << " ";
}
else
cout << setw(4) << days << " ";
}
if (i == 8 || i == 11)
{
if (days == 8 || days == 15 || days == 22 || days == 29)
{
cout << "\n\n";
cout << setw(4) << days << " ";
}
else
cout << setw(4) << days << " ";
}
}
cout << "\n";
}
cout << "--------------------------------------------------------------------------------";
system("PAUSE");
return EXIT_SUCCESS;
}
Upvotes: 0
Views: 15407
Reputation: 1
This works in Windows 10/11 and Linux (You can use it also in Python). Does not work in Windows 8.1:
cout << "Normal text" << "\033[1;31;40m Red text \033[0m" << "Normal text";
Upvotes: 0
Reputation: 56479
In text mode you have some limitations to do that. But there is some portable libraries which can handle your purpose such as coloring.
Read this question: Portable text based console manipulator and follow the link. It is portable at least between (Windows and ANSI-Escape supported OSs)
You can change the color like below code:
#include <iostream>
#include "rlutil.h" // <-- Get it from the link
int main()
{
rlutil::setColor(2); // 2 for Green
std::cout << "Hello! I am green!" << std::endl;
return 0;
}
Upvotes: 4
Reputation: 129344
There is no C++ "standard" way to do this. You can either find a library, as suggested by Masoud - this will allow your code to be portable to other systems. Or you can use for example ANSI Escape sequences directly [that's PROBABLY what the portable solution does behind the scenes, but there are other ways].
This page gives some information: http://en.wikipedia.org/wiki/ANSI_escape_code
Bear in mind however that this is non-portable, and will not work on all platforms.
Upvotes: 0