2010-12-02 5 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 자로 채워지고 나머지 두 문자는 반환 된 후에 다음 줄의 시작 부분에 나타나게됩니다. 첫 줄에는 아무 것도없고 마지막 줄에는 혼자있는 사람이 없습니다. endl을 출력하기 전에 필드 너비를 다시 1로 설정해보십시오.

+0

그레이트 :). 그것은 두 곳에서 문제를 해결했습니다. 고마워요! – Moomin

관련 문제