QTextStream используется для вывода консоли
-
30-09-2019 - |
Вопрос
Эй, я сталкиваюсь с этой действительно раздражающей проблемой с 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..
..
Я не могу избавиться от этого странного сдвига в первой строке, и я не знаю, где ..
родом из. Я думаю, что может быть какая-то проблема с флагами выравнивания, но понятия не имею, что именно может быть.
Спасибо за помощь.
Решение
Если бы я догадался, я бы сказал endl
Оставляется выровнена и дополнена до 3 символов, с дополнительными двумя символами появляются после возврата, чтобы они появлялись в начале следующей строки. Нет на первой линии и в одиночку на последней линии. Попробуйте установить ширину поля обратно на 1, прежде чем выводить endl
.
Не связан с StackOverflow