我像这样重载了流插入操作符:
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 :(得分:5)
您可以使用std::basic_ostream::flags()
来确定是否使用了格式说明符。
答案 1 :(得分: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;
}
我想你可以在这个例子中用你的流参数替换cout