2)使用流对象的有关成员函数。分别叙述如下。
使用控制符的方法
#include <iostream>
#include <cstdio>
#include <iomanip>
using namespace std;
int main()
{
	int a;
	cout << "input a:";
	cin >> a;
	cout << "dec:" << dec << a << endl; //以十进制形式输出整数
	cout << "hex:" << hex << a << endl; //以十六进制形式输出整数a
	cout << "oct:" << setbase(8) << a << endl; //以八进制形式输出整数a
	char *pt = "China"; //pt指向字符串"China"
	cout << setw(10) << pt << endl; //指定域宽为,输出字符串
	cout << setfill('*') << setw(10) << pt << endl; //指定域宽,输出字符串,空白处以'*'填充
	double pi = 22.0 / 7.0; //计算pi值
	//按指数形式输出,8位小数
	cout << setiosflags(ios::scientific) << setprecision(8);
	cout << "pi=" << pi << endl; //输出pi值
	cout << "pi=" << setprecision(4) << pi << endl; //改为位小数
	cout << "pi=" << setiosflags(ios::fixed) << pi << endl; //改为小数形式输出
	system("pause");
	return 0;
}
运行结果如下:
举例, 输出双精度数:
double a=123.456789012345; // 对a赋初值
1) cout<<a; 输出: 123.456
2) cout<<setprecision(9)<<a; 输出: 123.456789
3) cout<<setprecision(6); 恢复默认格式(精度为6)
4) cout<< setiosflags(ios∷fixed); 输出: 123.456789
5) cout<<setiosflags(ios∷fixed)<<setprecision(8)<<a; 输出: 123.45678901
6) cout<<setiosflags(ios∷scientific)<<a; 输出: 1.234568e+02
7) cout<<setiosflags(ios∷scientific)<<setprecision(4)<<a; 输出: 1.2346e02
下面是整数输出的例子:
int b=123456; // 对b赋初值
1) cout<<b; 输出: 123456
2) cout<<hex<<b; 输出: 1e240
3) cout<<setiosflags(ios∷uppercase)<<b; 输出: 1E240
4) cout<<setw(10)<<b<<‘,‘<<b; 输出: 123456,123456
5) cout<<setfill(‘*‘)<<setw(10)<<b; 输出: **** 123456
6) cout<<setiosflags(ios∷showpos)<<b; 输出: +123456
如果在多个cout语句中使用相同的setw(n),并使用setiosflags(ios::right),可以实现各行数据右对齐,如果指定相同的精度,可以实现上下小数点对齐。
例如:各行小数点对齐。
int main( )
{
	double a=123.456,b=3.14159,c=-3214.67;
	cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);
	cout<<setw(10)<<a<<endl;
	cout<<setw(10)<<b<<endl;
	cout<<setw(10)<<c<<endl;
	system("pause");
	return 0;
}
输出如下:流成员函数setf和控制符setiosflags括号中的参数表示格式状态,它是通过格式标志来指定的。格式标志在类ios中被定义为枚举值。因此在引用这些格式标志时要在前面加上类名ios和域运算符“::”。格式标志见表13.5。
例:用流控制成员函数输出数据。
int main()
{
	int a = 21;
	cout.setf(ios::showbase);//显示基数符号(0x或)
	cout << "dec:" << a << endl; //默认以十进制形式输出a
	cout.unsetf(ios::dec); //终止十进制的格式设置
	cout.setf(ios::hex); //设置以十六进制输出的状态
	cout << "hex:" << a << endl; //以十六进制形式输出a
	cout.unsetf(ios::hex); //终止十六进制的格式设置
	cout.setf(ios::oct); //设置以八进制输出的状态
	cout << "oct:" << a << endl; //以八进制形式输出a
	cout.unsetf(ios::oct);
	char *pt = "China"; //pt指向字符串"China"
	cout.width(10); //指定域宽为
	cout << pt << endl; //输出字符串
	cout.width(10); //指定域宽为
	cout.fill('*'); //指定空白处以'*'填充
	cout << pt << endl; //输出字符串
	double pi = 22.0 / 7.0; //输出pi值
	cout.setf(ios::scientific); //指定用科学记数法输出
	cout << "pi="; //输出"pi="
	cout.width(14); //指定域宽为
	cout << pi << endl; //输出pi值
	cout.unsetf(ios::scientific); //终止科学记数法状态
	cout.setf(ios::fixed); //指定用定点形式输出
	cout.width(12); //指定域宽为
	cout.setf(ios::showpos); //正数输出“+”号
	cout.setf(ios::internal); //数符出现在左侧
	cout.precision(6); //保留位小数
	cout << pi << endl; //输出pi,注意数符“+”的位置
	system("pause");
	return 0;
}
运行情况如下:版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/zyq522376829/article/details/46788725