在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
输出对齐有两个方面,一是输出宽度,一是左对齐还是又对齐。 在C++里面,默认是右对齐,可以通过cout.setf(std::ios::left)调整为左对齐,而且这种调整是全局的 ,一次设置,后面都有效。 但是对于输出宽度的设置(使用cout.width(int i)设置)是一次性的,只影响紧随其后的一次输出。 具体可以参看下面的代码: #include<iostream> int main(){ using std::cout; cout.setf(std::ios::left); int w = cout.width(); cout << "default field width = " << w << "\n"; cout.width(5); cout << "N" << ":"; cout.width(8); cout << "N * N" << "\n"; for (long i = 1; i <= 100; i *= 10){ cout.width(5); cout << i << ':'; cout.width(8); cout << i * i << "\n"; } return 0; }
我们可以把调整对齐方向的代码删除(也就是采用默认的右对齐设置),重新运行后输出如下: 可以仔细观察下,坐边的数与冒号的距离。在采用右对齐的时候,左边的数与冒号是紧邻的,而采用左对齐的时候,左边的数在输出5个字符宽度后,才输出冒号(再次强调,宽度设置只影响一次输出。也就是只影响N的输出,没有影响冒号的输出。) 在这方面C语言的就显得简单多了,printf("%5d"),输出占用5个字符宽度,且右对齐,printf("%-5d")输出占用5个字符宽度,且左对齐。都是什么时候用就什么时候设置。 还有一个问题就是,当实际的数据需要的宽度超出你设置的宽度的时候怎么办? C++的选择是,保证将数据显示完整。 比如上面程序中的第8行: cout << "N" << ":"; cout << "NNNNN" << ":"; 此时,数据恰好5个字符宽,依旧可以对齐,但是我们再加一个N,如下: cout << "NNNNNN" << ":"; 有没有发现已经对不齐了。所以C++中式优先保证把数据显示完整。 C语言使用printf其实也是一样的,优先保证把数据显示完整。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论