QTextStream utilizzato per l'output su console
-
30-09-2019 - |
Domanda
Ehi, sto di fronte a questo problema davvero fastidioso con QTextStream usato per l'uscita della 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;
}
}
I risultati sembrano come questo con: trovato polinomiale è:
.....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..
..
Non può sbarazzarsi di questo strano cambiamento in prima linea, e non so da dove viene ..
provengono. Penso che ci potrebbe essere qualche problema con le bandiere di allineamento, ma non hanno alcuna idea di che cosa esattamente si tratta maggio.
Grazie per l'aiuto.
Soluzione
Se dovessi indovinare, direi che il endl
viene allineato a sinistra e imbottita a 3 caratteri, con i due personaggi che compaiono in più dopo il ritorno in modo che essi si presentano all'inizio della riga successiva. Nessuno sulla prima riga e tutto solo sull'ultima riga. Prova a impostare il campo di larghezza di nuovo a 1 prima di emettere il endl
.