我正在尝试使用 NTL 库(数论库)格式化输出。其中一个对象是 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
视为单个字符,并且似乎实际上并未考虑输出字符串的大小。正如您从我向您展示的输出中看到的那样,GF2X 输出的左侧是对齐的,但右侧没有对齐,而通常 setw 似乎对齐输出的右侧。