我像这样重载了流插入操作符:
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;
}
(可能是我希望重载工作的类)
也就是说,因为我可以给to_string
方法不同的参数,我希望能够使用标准的流修饰符,如std::dec
, std::hex
…在某种程度上,我可以从重载操作符中检索它们,以准备好的参数作为to_string
如果我也可以得到正在使用的区域设置(提取分隔符为千),这将有助于第二个参数…
您可以使用std::basic_ostream::flags()
来识别是否使用了格式说明符。
From 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;
}
我想你可以用你的流参数替换cout在这个例子中