C++ 在输出数据时,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出。例如,在C语言中printf()函数可以非常方便控制保留几位小数输出,但在C++中cout() 和printf() 还是有些区别。
对比C和C++中保留两位小数输出:
这里简单介绍下C++中格式化控制输出:一种是使用控制符控制输出格式,另一种是使用流对象的有关成员函数。
1. 使用控制符控制输出格式
eg:
输出结果 :
注:
setiosflags(ios::fixed)是指以固定的浮点显示,当setiosflags(ios::fixed)和serprecision(n)两个一起用时就表示保留n位小数输出。每次输出只要设置一次就行了,因为这两个的作用范围是后续对象,而不是仅对后一个对象起作用。
2.使用流对象的有关成员函数控制输出
eg:
#include<iostream>
using namespace std;
int main()
{
int a = 16;
cout.setf(ios::dec);
cout<<"dec:"<<dec<<a<<endl; //以十进制形式输出整数
cout.unsetf(ios::dec); //终止十进制的格式设置
cout.setf(ios::hex);
cout<<"hex:"<<hex<<a<<endl; //以十六进制形式输出整数
cout.unsetf(ios::hex);
cout.setf(ios::oct);
cout<<"oct:"<<oct<<a<<endl; //以八进制形式输出整数
cout.unsetf(ios::oct);
double b = 123.1234;
cout.setf(ios::fixed);
cout.precision(2);
cout<<b<<endl; //保留两位小数输出
cout.unsetf(ios::fixed);
system("pause");
return 0;
}
结果:
注: cout流的成员函数是在头文件iostream 中定义的,因此只需包含头文件iostream,不必包含iomanip。