2010-12-02 5 views
2

Hey, je suis confronté à ce problème très ennuyeux avec QTextStream utilisé pour la sortie console.QTextStream utilisé pour la sortie console

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; 
    } 
} 

Les résultats ressemblent à ceci avec: polynôme trouvé est:

.....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.. 
.. 

Je ne peux pas me débarrasser de ce changement étrange dans la première ligne, et je ne sais pas d'où vient de ... Je pense qu'il pourrait y avoir un problème avec les drapeaux d'alignement, mais je ne sais pas exactement ce que c'est.

Merci pour votre aide.

Répondre

2

Si je devais deviner, je dirais le endl est aligné à gauche et rembourré à 3 caractères, avec les deux caractères supplémentaires apparaissant après le retour afin qu'ils apparaissent au début de la ligne suivante. Aucun sur la première ligne et tout seul sur la dernière ligne. Essayez de redéfinir la largeur du champ sur 1 avant de sortir le endl.

+0

Super :). Il a résolu le problème dans les deux endroits. Merci beaucoup! – Moomin

Questions connexes