【问题标题】:setw gives extra space after first loopsetw 在第一次循环后提供额外的空间
【发布时间】:2017-12-03 18:38:52
【问题描述】:

如何阻止 setw() 在 endl 之后创建空间?我在此处显示列标题的第一个循环工作正常,但在我的第二个循环(显示数据)中,在显示第一行之前我得到了一个很大的空白区域。我已经尝试清除缓冲区并放入额外的“endl”。

for (int i = 0; i < airports.size(); i++)
{

    cout << airports[i] <<setw(10);
}
cout << endl;

for (int i = 0; i < numAirprts; i++)
{
    for (int j = 0; j < numAirprts; j++)
    {
        cout << i;
        cout << setw(4);

        for (int k = 0; k < milesCost; k++)
        {
            cout << costArray[i][j][k] << setw(2) <<" ";
        }

    }
    cout << endl;
}

这是一个输出示例:

DEN       LAX        LV       PHX       SFA       SFO       SJC       SLC

         0  -1  -1  0 844  69  0  -1  -1  0  -1  -1  01026  72  0  -1  -1  0  -1  -1  0  -1  -1
1  -1  -1  1  -1  -1  1 231  23  1  -1  -1  1  -1  -1  1 344  39  1  -1  -1  1 581  57
2  -1  -1  2  -1  -1  2  -1  -1  2 256  21  2  -1  -1  2  -1  -1  2  -1  -1  2 362  29
3 586  65  3  -1  -1  3  -1  -1  3  -1  -1  3  -1  -1  3  -1  -1  3  -1  -1  3  -1  -1
4  -1  -1  4  -1  -1  4  -1  -1  4  -1  -1  4  -1  -1  4 679  67  4  -1  -1  4 700  59
5  -1  -1  5  -1  -1  5 420  39  5  -1  -1  5  -1  -1  5  -1  -1  5  -1  -1  5 605  19
6  -1  -1  6  -1  -1  6  -1  -1  6  -1  -1  6  -1  -1  6  51  19  6  -1  -1  6  -1  -1
7 379  49  7  -1  -1  7  -1  -1  7  -1  -1  7  -1  -1  7  -1  -1  7 585  29  7  -1  -1

【问题讨论】:

标签: c++ setw


【解决方案1】:

您可以在结束之前重置setw,例如:

cout << setw(0) << endl;

【讨论】:

    猜你喜欢
    • 2020-10-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2017-05-18
    • 2016-08-18
    • 1970-01-01
    相关资源
    最近更新 更多