NTL ライブラリ (数論ライブラリ) を使用して出力をフォーマットしようとしています。オブジェクトの 1 つは GF2X オブジェクトで、係数の文字列として表される多項式です。簡単な例:
GF2X a = GF2X(5,1);
a++;
cout<<a;
[1 0 0 0 0 1]
x^5 + 1 と同じ結果が得られます。私の質問は、setw を使用してこの出力をフォーマットすることです。さまざまな長さの GF2X オブジェクトを出力し、数値を前に付け、文字列を追加できるようにしたいと考えています。出力を次のようにしたいと思います。
1: [x x x x x x x x] string here
15: [x x x] string here
setw を使用している場合は、これがおそらく期待されるはずです。ただし、コードを使用すると(変数名は簡単にするために省略されています):
cout << setw(3)<< int <<": "<< setw(35) << GF2X << setw(15) << string << endl;
このような出力が得られます(コンパクトにするために一部の空白を削除しました)
1: [x x x x x x x x] string here
15: [x x x] string here
つまり、 setw 関数は の出力全体<<GF2X
を 1 つの文字として扱っているように見え、実際には出力文字列のサイズを考慮していないようです。私が示した出力からわかるように、GF2X 出力の左側は整列されていますが、右側は整列されていませんが、通常、setw は出力の右側を整列しているように見えます。