【问题标题】:cout: consistent spacing with looped cout statementscout:与循环 cout 语句保持一致的间距
【发布时间】:2012-07-04 19:02:47
【问题描述】:

我经常遇到想将二维数组打印到屏幕或文件的情况。我的标准做法是这样的:

for(int q=0; q<x; q++)
{
    cout << "\n";
    for(int w=0; w<y; w++)
        cout << number[q][w] << "\t";
}

但是,当number 的元素长度不同时,这通常会导致列未正确对齐。如何在每个数字之后(或之前)添加正确数量的空格以使列对齐?

【问题讨论】:

    标签: c++ formatting cout


    【解决方案1】:

    使用std::setw()std::left and std::right

    #include <iostream>
    #include <iomanip>
    
    void printNumber(int x) {
        std::cout << "X:" << std::setw(6) << x << ":X\n";
    }
    
    void printStuff() {
        printNumber(528);
        printNumber(3);
        printNumber(73826);
        printNumber(37);
    }
    
    int main() {
        std::cout << "Left-aligned\n";
        std::cout << std::left;
        printStuff();
        std::cout << "Right-aligned\n";
        std::cout << std::right;
        printStuff();
    }
    

    输出:

    Left-aligned
    X:528   :X
    X:3     :X
    X:73826 :X
    X:37    :X
    Right-aligned
    X:   528:X
    X:     3:X
    X: 73826:X
    X:    37:X
    

    (演示:http://ideone.com/6IdIc.)

    在本例中,我使用 6 作为预期的最大宽度。如果您不知道最大值,则需要对数据进行初始传递以找出答案,或者只使用您正在使用的数据类型的最大值(为了使其可移植,您可以使用std::numeric_limits&lt;T&gt;::max)。

    【讨论】:

    • 很好的答案奥利。额外的细节非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多