2013-10-08 45 views
1

問題如何實現自定義類似ostringstream的格式化狀態?

假設我有一類這樣的:

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

換句話說,如何以及我應該在哪裏捕捉的輸出狀態?

回答

3

你可以寫輸出機械手和ios_base::iword捕捉狀態(即頁面有一個自定義狀態操縱的一個例子)

相關問題