setw дает дополнительное пространство после первого цикла

Как мне остановить 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

1 ответ

Вы можете сбросить setw перед окончанием, что-то вроде:

cout << setw(0) << endl;
Другие вопросы по тегам