【问题标题】:QTextStream used for console outputQTextStream 用于控制台输出
【发布时间】:2011-05-19 09:07:11
【问题描述】:

我正面临着用于控制台输出的 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..
..

我无法摆脱第一行的这种奇怪转变,我不知道.. 来自哪里。我认为对齐标志可能存在一些问题,但不知道它到底是什么。

感谢您的帮助。

【问题讨论】:

    标签: qt4 iostream cout console-output


    【解决方案1】:

    如果我猜的话,我会说 endl 左对齐并填充为 3 个字符,额外的两个字符出现在返回之后,以便它们出现在下一行的开头。第一行没有,最后一行只有一个人。在输出 endl 之前尝试将字段宽度设置回 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多