我想格式化輸出使用NTL庫(數字理論庫)。其中一個對象是GF2X對象,它是一個表示爲一系列係數的多項式。一個簡單的例子:如何使用setw與對象
GF2X a = GF2X(5,1);
a++;
cout<<a;
將產生[1 0 0 0 0 1]
這是相同的爲x^5 + 1。我的問題是關於格式化使用運輸及工務局局長此輸出。我希望能夠輸出各種長度的GF2X對象,由一個數字前綴,並附加一個字符串。我想我的輸出如下所示:
1: [x x x x x x x x] string here
15: [x x x] string here
我也滿足於右]對齊,這是什麼,如果我使用的是運輸及工務局局長我應該想到。然而,當我使用的代碼(ommitted爲簡單起見,變量名):
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
換句話說(對於緊湊刪除了一些白色的空間),在運輸及工務局局長功能似乎將<<GF2X
的整個輸出視爲單個字符,並且似乎實際上不考慮輸出字符串的大小。正如你從我向你展示的輸出中可以看到的那樣,GF2X輸出的左側是對齊的,但是右側不是,而通常setw似乎將輸出的右側對齊。
一種方法可以是重載<< operator GF2X – nims 2012-07-29 18:48:06
@nims:他似乎已經做到了。操縱者不適合他們的工作。我更喜歡使用將我的對象格式化爲字符串的自定義類,並將它們傳遞給流和創建這些對象的函數。看起來像這樣:'cout << FormatWidth(35,GF2X);' – 2012-07-29 18:50:56
你試過傳遞'std :: left'嗎? – jrok 2012-07-29 18:53:21