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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top