2010-12-02 8 views
2

ちょっと、コンソール出力用に使用されているQTextStreamでこれが本当に厄介な問題に直面しています。QTextStreamがコンソール出力に使用されました

QTextStream cout(stdout, QIODevice::WriteOnly); 
cout.setRealNumberPrecision(1); 
cout.setPadChar('.'); 

// some code generating values of f[i] [...] 

for (int i = 10; i >= 0; i--) 
{ 
    if (f[i] < -0.04 || f[i] > 0.04 || 1) 
    { 
     cout.setRealNumberNotation(QTextStream::FixedNotation); 
     cout.setFieldAlignment(QTextStream::AlignRight); 
     cout.setFieldWidth(8); 
     cout << f[i]; 
     cout.setFieldAlignment(QTextStream::AlignLeft); 
     cout.setFieldWidth(3); 
     cout << "*x^"; 
     cout.setFieldAlignment(QTextStream::AlignLeft); 
     cout.setNumberFlags(cout.numberFlags() & ~QTextStream::ForceSign); 
     cout << i << endl; 
    } 
} 

結果がで次のようになります。 た多項式である:

.....0.0*x^10. 
......-0.0*x^9.. 
.......0.0*x^8.. 
......-0.0*x^7.. 
.......0.0*x^6.. 
.......1.0*x^5.. 
.....-36.0*x^4.. 
.....397.0*x^3.. 
...-1674.0*x^2.. 
....2753.0*x^1.. 
...-1440.0*x^0.. 
.. 

私は、最初の行にこの奇妙なシフトを取り除くことはできない、と..から来ないところ私は知りません。私はアライメントフラグに何らかの問題があるかもしれないと思っていますが、正確にはそれが何であるか分かりません。

ありがとうございました。

答えて

2

もし私が推測するなら、endlは3文字に詰め置きされていて、余分な2文字は戻りの後に現れて次の行の先頭に現れると言うでしょう。最初の行にはなし、最後の行には一人だけ。 endlを出力する前に、フィールド幅を1に戻してみてください。

+0

グレート:)それは両方の場所で問題を解決しました。どうもありがとう! – Moomin

関連する問題