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

标签 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";

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

最佳答案

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

关于c++ - 如何实现自定义的类似 ostringstream 的格式化状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19252599/

相关文章:

c++ - 计算 N 个整数组合的绝对值

c++ - 在 C++ 中使用没有类实例的静态函数

c++ - 为什么 Visual Studio 正在删除我的反斜杠字符串

c++ - 缺少元素的结构集

c++ - 使用 union 的函数指针转换

java - Eclipse:设置自动格式化的最大行长对吗?

c++ - 使用 switch 的自动函数返回值

c++ - 为什么 std::bind 在这个例子(成员函数)中没有占位符就不能工作?

formatting - 在使用四开本创建的引用书目中使用粗体字体格式化特定作者

java - Java Scanner 类中的字符串格式化