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

(可能是我希望重载工作的类)

也就是说,因为我可以给to_string方法不同的参数,我希望能够使用标准的流修饰符,如std::dec, std::hex…在某种程度上,我可以从重载操作符中检索它们,以准备好的参数作为to_string

的参数

如果我也可以得到正在使用的区域设置(提取分隔符为千),这将有助于第二个参数…

您可以使用std::basic_ostream::flags()来识别是否使用了格式说明符。

http://en.cppreference.com/w/cpp/io/ios_base/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在这个例子中

相关内容

  • 没有找到相关文章

最新更新