2013-05-29 112 views
3

我重載流插入操作這樣獲得流修改:C++從<<超載

template<class Ch, class Tr, class word_type> 
std::basic_ostream<Ch, Tr>& 
operator << (std::basic_ostream<Ch, Tr>& s, const Mabit::mabit<word_type>& obj) 
{ 
    s << obj.to_string(Mabit::DEC, ','); 
    return s; 
} 

(MABIT被分配爲我想要的超負荷工作類)

也就是說,由於我可以給to_string方法提供不同的參數,我希望能夠使用像std::dec,std::hex ......這樣的標準流修飾符,以便我可以從重載運算符中檢索它們以準備好參數作爲參數to_string

如果我還可以得到正在使用的語言環境(提取數千個分隔符),這對於第二個參數也是有用的......

這可能嗎?

+0

看看這個對你的作品:HTTP://www.cplusplus .com/reference/locale/numpunct/thousands_sep/ – AlexK

+0

感謝AlexK,這是Steven Maitlall回答後的最後一個缺失部分! – jav974

回答

1

http://www.cplusplus.com/reference/locale/numpunct/thousands_sep/

#include <iostream> 
#include <locale> 
using namespace std; 

int main() 
{ 
    int q=10977; 
    char separator = use_facet<numpunct<char> >(cout.getloc()).thousands_sep(); 
    cout << q/1000 << separator << q%1000 << endl; 
    return 0; 
} 

我想你可以用你的流參數替換CO​​UT在這個例子中