首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cout:循环cout语句的一致间距

cout:循环cout语句的一致间距
EN

Stack Overflow用户
提问于 2012-07-05 03:02:48
回答 1查看 8.4K关注 0票数 3

我经常遇到这样一种情况,我想要将一个二维数组打印到屏幕或文件中。我的标准方法是:

代码语言:javascript
复制
for(int q=0; q<x; q++)
{
    cout << "\n";
    for(int w=0; w<y; w++)
        cout << number[q][w] << "\t";
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-05 03:06:38

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

代码语言:javascript
复制
#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();
}

输出:

代码语言:javascript
复制
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::max)。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11334271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档