I know you already figured it out, but I did something similar that may interest you. This shows you what you can do once you learn how to overload the operators and have it print out your own data types:
Code:
#include <iostream>
#include <string>
using namespace std;
enum suitType {hearts, diamonds, clubs, spades, badsuit};
enum valueType {two, three, four, five, six, seven, eight,
nine, ten, jack, queen, king, ace, badvalue};
ostream& operator<< (ostream &Out, valueType value);
ostream& operator<< (ostream &Out, suitType suit);
istream& operator>> (istream &In, valueType &value);
istream& operator>> (istream &In, suitType &suit);
main()
{
valueType myvalue;
suitType mysuit;
for (int a = 0; a < 13; a++)
{
cout << "Enter the card value ---> ";
cin >> myvalue;
cout << "Enter the card suit ---> ";
cin >> mysuit;
cout << endl << myvalue << " of " << mysuit << endl << endl;
}
cin.get();
return 0;
}
ostream& operator<< (ostream &Out, valueType value)
{
switch (value)
{
case two: Out << "two"; break;
case three: Out << "three"; break;
case four: Out << "four"; break;
case five: Out << "five"; break;
case six: Out << "six"; break;
case seven: Out << "seven"; break;
case eight: Out << "eight"; break;
case nine: Out << "nine"; break;
case ten: Out << "ten"; break;
case jack: Out << "jack"; break;
case queen: Out << "queen"; break;
case king: Out << "king"; break;
case ace: Out << "ace"; break;
case badvalue: Out << "invalid value"; break;
}
return Out;
}
ostream& operator<< (ostream &Out, suitType suit)
{
switch (suit)
{
case hearts: Out << "hearts"; break;
case diamonds: Out << "diamonds"; break;
case clubs: Out << "clubs"; break;
case spades: Out << "spades"; break;
case badsuit: Out << "invalid suit"; break;
}
return Out;
}
istream& operator>> (istream &In, valueType &value)
{
string temp;
In >> temp;
for (int count = 0; count < temp.size(); count++)
if ('A' <= temp[count] && temp[count] <= 'Z')
temp[count] += 32;
if (temp == "two") value = two;
else if (temp == "three") value = three;
else if (temp == "four") value = four;
else if (temp == "five") value = five;
else if (temp == "six") value = six;
else if (temp == "seven") value = seven;
else if (temp == "eight") value = eight;
else if (temp == "nine") value = nine;
else if (temp == "ten") value = ten;
else if (temp == "jack") value = jack;
else if (temp == "queen") value = queen;
else if (temp == "king") value = king;
else if (temp == "ace") value = ace;
else value = badvalue;
return In;
}
istream& operator>> (istream &In, suitType &suit)
{
string temp;
In >> temp;
for (int count = 0; count < temp.size(); count++)
if ('A' <= temp[count] && temp[count] <= 'Z')
temp[count] += 32;
if (temp == "hearts") suit = hearts;
else if (temp == "diamonds") suit = diamonds;
else if (temp == "clubs") suit = clubs;
else if (temp == "spades") suit = spades;
else suit = badsuit;
return In;
}