C++学习记录——为什么有时候使用\t对不齐数据

今天在实现C++关于结构体方面的代码时候,定义了一个维度是3的结构体数据,简单在程序里面初始化后想着输出能够好看一点,便用\t进行对齐,发现第三个数据竟然没对齐,所以自己研究了一下背后的原因,先看一下我的具体代码。

#include <iostream>
using namespace std;

struct CandyBar
{
	string brand;
	float weight;
	int calorie;
};

int main(void)
{
	CandyBar snack[3] = {
							"Mocha Munch",2.3,250,
							"Fruit Salad",5.2,200,
							"hamburger",2.6,1000
												};
	cout << "Brand:" << snack[0].brand << "\tweight:"
		<< snack[0].weight << "\tcalorie:" << snack[0].calorie << endl;
	cout << "Brand:" << snack[1].brand << "\tweight:"
		<< snack[1].weight << "\tcalorie:" << snack[1].calorie << endl;
	cout << "Brand:" << snack[2].brand << "\tweight:"
		<< snack[2].weight << "\tcalorie:" << snack[2].calorie << endl;

	return 0;
}

我期待的结果如下:

但是实际的结果如下: 

经过研究发现,\t对齐原理是构建8的倍数,即前面字符的个数如果是8的倍数,就直接在后面添加8个空格,比如前面字符个数是8,则加上8个空格,前面字符个数是16,也是加8个空格。如果前面字符个数不是8的倍数就添加一定数量的空格使得总个数是8的倍数,比如前面字符个数是7就加1个空格,是20就加4个空格,是25就加7个空格,所以自己写代码的时候最好输入等长的字符串,以免出现对不齐的问题。

下图是一个演示,第一行我使用了\t,第二行我为了容易算,所以将\t的作用用7个数字代替,可以算出前面字符个数是17,所以如果用\t会补7个空格,最后一行我加了#将前面的字符凑齐到16个,后面用8个数字代替\t的作用,可以看出使用\t的话后面会补齐八个空格。

大家可以自己试一下,如果我哪里说得不对希望大家指正,互相交流才能更快进步! 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值