前一章,我们了解了再C++中的标准的输入输出问题,那么肯能就有人会问了再C语言中我们可以灵活的控制输出和显示,那么再再C++中可以实现吗?我的回答是当然可以的,只不过再C++中的控制可能相比较而言要比再C++语言中的繁琐一点,那么我们就先来看看最C++中的格式控制(以下所有资料均来自与http://www.cplusplus.com):
1、基数设置方法:
dec 10进制数 相当于%d
hex 16进制数 相当于%x
oct 8进制数 相当于%o
#include <iostream> using namespace std; int main(int argc, char **argv)
{
int val = ;
cout << "dec: " << dec << val << endl;
cout << "hex: " << hex << val << endl;
cout << "oct: " << oct << val << endl;
return ;
}
输出结果为:
dec:
hex:
oct:
2、浮点数的格式控制
setprecision(n) 设置显示小数精度为n位
setiosflags(ios::fixed) 固定的浮点显示
setiosflags(ios::scientific) 指数表示
setiosflags(ios::left) 左对齐
setiosflags(ios::right) 右对齐
#include <iostream>
using namespace std;
#include <iomanip> int main(int argc, char **argv)
{
double dv = 123456.654321; cout << "dv的默认输出: " << dv << endl;
cout << "dv指定为浮点数输出: " << setiosflags(ios::fixed)
<< dv << endl;
cout << "dv指定为浮点数输出,并保留两位小数: " << setiosflags(ios::fixed)
<< setprecision() << dv << endl;
cout << "dv指定为指数形式输出(默认保留5位小数):" << setiosflags(ios::scientific)
<< dv << endl;
cout << "dv指定为指数形式输出,并保留10位小数:" << setiosflags(ios::scientific)
<< setprecision() << dv << endl;
cout << setiosflags(ios::left) << setprecision() << dv << endl;
cout << setiosflags(ios::right) << setprecision() << dv << endl;
return ;
}
输出结果为:
dv的默认输出:
dv指定为浮点数输出: 123456.654321
dv指定为浮点数输出,并保留两位小数: 123456.65
dv指定为指数形式输出(默认保留5位小数):1.2e+05
dv指定为指数形式输出,并保留10位小数:123456.6543
1.2346e+05
setw(n) 设置域宽为n个字符
setfill(char); 设置填充字符
#include <iostream>
using namespace std;
#include <iomanip> int main(int argc, char **argv)
{
int val = ;
double pi = 3.14; //输出宽度为10,左对齐,不足就填充‘*’
cout << "val: " << setw() <<setiosflags(ios::left)
<< setfill('*') << val << endl;
//输出宽度为10,右对齐,不足就填充‘*’
cout << "pi: " << setw() << setiosflags(ios::right)
<< setfill('*')<< pi << endl;
return ;
}
关于C++中的格式控制就先说道这儿,当然除了我们上边提到的还有很多格式控制方法,具体就有待大家去查询了。