C ++表格对齐 - cout和iomanip

时间:2014-12-28 18:56:51

标签: c++ alignment cout

我的程序中有一个小的对齐问题。

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    cout << setw(5) << "Sl. No:" << setw(15) << "Month" << setw(15) << "Name" << endl << endl;
    cout << setw(5) << 1 << setw(15) << "January" << setw(15) << "Abhilash" << endl;
    cout << setw(5) << 2 << setw(15) << "Februaury" << setw(15) << "Anandan" << endl;
    cout << setw(5) << 3 << setw(15) << "March" << setw(15) << "Abhilash" << endl;
    cout << setw(5) << 4 << setw(15) << "April" << setw(15) << "Anandan" << endl;

    return 0;
}

在我得到的输出中,月份的名称不正确。

Sl. No:          Month           Name

    1        January       Abhilash
    2      Februaury        Anandan
    3          March       Abhilash
    4          April        Anandan

什么似乎是问题?

3 个答案:

答案 0 :(得分:5)

字符串Sl. No:宽7,您正试图将其放入5宽列中。这将第一行推过2列。尝试将第一列宽7而不是宽5:

cout << setw(7) << "Sl. No:" << setw(15) << "Month" << setw(15) << "Name"
     << endl << endl;
cout << setw(7) << 1 << setw(15) << "January" << setw(15) << "Abhilash"
     << endl;
//...

答案 1 :(得分:0)

当你想使用setw时,你必须从输出字符串的末尾开始计算int等。所以当你说

 cout << setw(15) << "January";

它将在中间格式化8个空格,因为1月份是7个字符。所以在你的例子中,你想拥有

 cout << setw(23) << "January";

这显然取决于你是否将第一个输出'1'放在同一个地方。

答案 2 :(得分:0)

哦,你需要在&#34;月&#34;

前面使用间距
    "  month"

不是

    "month"

结果将如下所示

     Month
    January

您可能需要调整使用的间距。