2015-11-11 4 views
7

私は多項式のクラスを持ち、その自然な表現は係数です。係数が設定されている場合は、その2進数ではa 1、3進数では1または2などです。たとえば、2進数では、X +1は101として表されます。三項式では、2X + 1は、201として表される。ostreamを8,10,16以外の基底で使用する

クラスは、operator<<オーバーロードを提供する。内部的には、クラスは整数配列を使用して係数を表します。だから私は実行することができる必要があります:

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

私が午前問題は、私は8以外の塩基のためのostreamを設定する方法がわからないで、10と16 ios_basestd::octを提供し、std::decとのためstd::hexしかし、私は頻繁に使用されるベースのために何を使用するか分かりません。 C++ Reference on ios_baseのようなページでは、何を使うべきかは議論されていません。

8,10,16以外のベースでostreamを使用するにはどうすればよいですか?

+1

いいえ、他のベースはサポートされていません。それを文字列に変換して出力する必要があります。 –

+4

これが標準的な手段で可能かどうかは不明です。 http://en.cppreference.com/w/cpp/io/manip/setbase - "8,10、または16以外のベースの値は、10進数の出力と接頭辞に依存する入力に対応するベースフィールドをゼロにリセットします。 " – jready

+0

非常に最近追加されたことがわからない限り、iostreamsの8,10,16以外の基盤はサポートされていません。数字を文字列として読んで、手で解読する必要があります。 – zwol

答えて

0

方向が逆だったので私の答えを置き換えてください。 itoaを参照してください。ドキュメントには、それが非標準機能であることが記載されています。これは非標準的な関数なので、stackoverflowはページに実装されています。

+2

残念ながら、OPは反対の方法を求めます。彼らは彼ら自身のIOマニピュレータを提供する必要があります。もちろん、この実装は、 'stoi()'が何に変換できるのかを確認する文字列表現を返さなければなりません。 –

+1

'setbase'は期待通りに動作していないようです。引用されたページから:* "... 8,10、または16以外の基数の値は、基数をゼロにリセットします。これは小数出力と接頭辞依存入力に対応します。" * – jww

+0

@πάνταῥε。私の答えを修正しました。ヘッドアップをありがとう。 –

4

これは標準的な手段では可能ではないと思います。 出力プレフィックス依存入力10進数に対応するゼロにbaseFieldの8以外の塩基、10、又は16リセットのstd::setbase

値を見て。

関連する問題