C ++ setw()函数不会为最后打印的值添加空格(错位的宽度/空格?)

问题描述 投票:0回答:1

这是我的代码:

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    int steve[2][3] = {{2, 3, 4}, {8, 9, 10}};

    //What the array will look like:
        // 2, 3, 4,
        // 8, 9, 10
    //They operate like coordinates: array[row number][index of element within row]

    //cout << steve[row][column];


    int n = 0;
    int i = 0;

    //my way
    while (n == 0 && i < 3)
    {
        cout << steve[n][i] << setw(2);
        i++;

        if (i == 3)
        {
            cout << endl;
            i = 0;
            n +=1;

            while (n == 1 && i<3)
            {

                cout << steve[n][i] << setw(2);
                i++;   
            }
        }
    }
}

我的问题是我的输出看起来像这样:

2 3 4                                                                                                                      
 8 910

[当我试图使它看起来像这样时:

2 3 4                                                                                                                      
8 9 10

有人可以向我解释为什么setw()无法正常工作,以及它实际上对我的代码有何作用?只是要抬起头,我已经尝试在两个输出命令上简单地使用空格,例如:

cout << steve[n][i] << " "; 
cout << steve[i][n] << " ";

它以我想要的方式工作,但是我真的很想知道setw()的工作方式以及为什么它会给我这个问题。

谢谢。

c++ arrays loops output
1个回答
0
投票

输出将在右侧对齐,对于所需的输出,您需要将其与左侧对齐:

© www.soinside.com 2019 - 2024. All rights reserved.