• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C/C++中的输出对齐设置

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

输出对齐有两个方面,一是输出宽度,一是左对齐还是又对齐。

在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其实也是一样的,优先保证把数据显示完整。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap