嘿,我正面临着用于控制台输出的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..
..
我无法摆脱第一行的这种奇怪的转变,我不知道..
来自哪里。我认为对齐标志可能存在一些问题,但不知道究竟是什么。
感谢您的帮助。
答案 0 :(得分:2)
如果我猜测,我会说endl
左对齐并填充为3个字符,返回后会出现额外的两个字符,以便它们显示在下一行的开头。第一行没有,最后一行都没有。在输出endl
之前,请尝试将字段宽度设置为1。