让我们从基础开始,重载提取运算符。 (注意:从流,输入提取算子的提取物,和插入操作者可以插入1个流,输出)
class Date
{
unsigned int m_year;
public:
friend std::istream& operator>>(std::istream& inp, Date& d);
};
std::istream& operator>>(std::istream& inp, Date& d)
{
// Read Date data members here
inp >> d.m_year;
return inp; // To allow chaining.
}
有了的基础上,下一步就是要拿出一个方案告诉Date
类使用哪种格式。
下面是一个例子:
class Date
{
unsigned int m_month;
unsigned int m_day;
unsigned int m_year;
public:
enum Format_Type
{
Day_Month_Year,
Month_Day_Year,
};
Format_Type input_format;
friend std::istream& operator>>(std::istream& inp, Date& d);
};
std::istream& operator>>(std::istream& inp, Date& d)
{
switch (input_format)
{
case Month_Day_Year:
{
char separator;
inp >> d.m_month >> separator >> d.m_day >> separator >> m_year;
}
break;
}
return inp;
}
你可以使通过允许用户指定格式字符串Date
类更复杂。但这只是对读者的一个练习。