C++/ C语言输出格式

首先看C++的:

C++输出对齐需要包含头文件<iomanip>,当然对齐方式也分为左右两种:

#include <iostream>
#include<iomanip>
using namespace std;
 
int main()
{
	int a = 9999;
	int b = 999;
	int c = 99;
 
	//默认右对齐
	cout << "默认右对齐为:\n";
	cout << setw(6) << a << endl;
	cout << setw(6) << b << endl;
	cout << setw(6) << c << endl;
 
	//现在改为左对齐
	cout << "\n改为左对齐后为:\n";
	cout << left << setw(6) << a << endl;
	cout << left << setw(6) << b << endl;
	cout << left << setw(6) << c << endl;
 
	return 0;
}

若想在多余位上填充字符,则: 

#include <iostream>
#include<iomanip>
using namespace std;
 
int main()
{
	int a = 9999;
	int b = 999;
	int c = 99;
 
	//默认右对齐
	cout << "默认右对齐为:\n";
	cout.fill('#');//填充字符'#'
	cout << setw(6) << a << endl;
	cout << setw(6) << b << endl;
	cout << setw(6) << c << endl;
 
	//现在改为左对齐
	cout << "\n改为左对齐后为:\n";
	cout.fill(' ');//取消字符填充
	cout << left << setw(6) << a << endl;
	cout << left << setw(6) << b << endl;
	cout << left << setw(6) << c << endl;
 
	return 0;
}

 

再看C语言的输出格式:

#include<iostream>
using namespace std;
 
int main()
{
	int a = 9999;
	int b = 999;
	int c = 99;
 
	//默认右对齐
	printf("默认右对齐为:\n");
	printf("%6d\n", a);
	printf("%6d\n", b);
	printf("%6d\n", c);
 
	//现在改为左对齐
	printf("\n改为左对齐后为:\n");
	printf("%-6d\n", a);
	printf("%-6d\n", b);
	printf("%-6d\n", c);
 
	return 0;
}

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

在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; }

在这方面C语言的就显得简单多了,printf("%5d"),输出占用5个字符宽度,且右对齐,printf("%-5d")输出占用5个字符宽度,且左对齐。都是什么时候用就什么时候设置。

还有一个问题就是,当实际的数据需要的宽度超出你设置的宽度的时候怎么办?

C++的选择是,保证将数据显示完整。

比如上面程序中的第8行:

C++中式优先保证把数据显示完整。

C语言使用printf其实也是一样的,优先保证把数据显示完整。

发布了27 篇原创文章 · 获赞 50 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/baidu_41774120/article/details/96486461