如何实现自定义类似ostringstream的格式化状态?

时间:2013-10-08 15:56:59

标签: c++ c++11 formatting ostream

问题

假设我有这样一个类:

enum eOutputMode
{
  DECIMAL,
  BILLS_AND_COINS
};

class BankAccount
{
  ssize_t         m_dollars;
  unsigned short  m_pennies;

public:
  friend ostream& operator<<( ostream& os, BankAccount const& rhs )
  {
    // switch on eOutputMode : output in DECIMAL or in BILLS_AND_COINS
    return os;
  }
};

问题

如何修改上面的代码,以便我可以像这样调用它?

BankAccount  ba;
os << eOutputMode::DECIMAL << ba << "\n";
os << eOutputMode::BILLS_AND_COINS << ba << "\n";

换句话说,我应该如何以及在何处捕获输出状态?

1 个答案:

答案 0 :(得分:3)

您可以编写输出操纵器并捕获ios_base::iword中的状态(该页面有一个自定义状态操纵器的示例)