将ostream用于8,10和16之外的基础

时间:2015-11-11 21:32:41

标签: c++ base ostream

我有一个多项式类,它的自然表示是它的系数。如果设置了系数,那么其a 1用于二项式,1或2用于三项式等。例如,在二项式的基础上,X 2 + 1表示为101;在三项式基础上,2X 2 + 1表示为201.

该类提供operator<<重载。在内部,该类使用整数数组表示系数。所以我应该能够执行:

ostringstream oss;
for (size_t i=0; i<v.size(); i++)
   oss << v[i];

我遇到的问题是我不知道如何为8,10和16之外的基础配置ostream。ios_base提供std::octstd::dec和{{1对于流行的基础,但我不知道如何使用较少使用的基地。像C++ Reference on ios_base这样的网页没有讨论要使用的内容。

如何使用8,10和16以外的基础的ostream?

2 个答案:

答案 0 :(得分:4)

我认为这不可能使用标准手段。看std::setbase

  

8,10或16以外的基数值将基数重置为零,其中   对应于十进制输出和前缀相关的输入。

答案 1 :(得分:0)

因为方向倒退而取代我的答案。见itoa。文档说这是一个非标准的功能。由于这是一个非标准函数,stackoverflow在页面中有一些实现。