通常,输入与输出是很难被处理的,因为人类的喜好与习惯并不遵从简单的、易于阐述的原则和直接的数学法则,所以I/O处理对程序员来说比较棘手,第11章的内容就是讲述如何对格式化获取输入、格式化输出以及自定义输入与输出流。
本文主要用于梳理《C++程序设计:原理与实践》第11章:定制输入与输出 的内容,包括对一些常用操纵符的总结以及章节最后简单练习的编程实现。
1. 声明一个整数birth_year,以十进制、十六进制、八进制格式输出birth_year,并标出每个输出值基数的名字。
int birth_year = 1996;
int current_year = 2020;
cout<< birth_year<< "\t(decimal)\n" << hex<< birth_year<< "\t(hexadecimal)\n"
<< oct<< birth_year << "\t(octal)\n";
2. 让输出的每个值都显示基数
十进制没有前缀,八进制前缀加0,十六进制前缀加0x
showbase操作是持久的。
// 显示基数
cout<< showbase;
// 取消前缀
cout<< noshowbase;
3. 读入八进制、十六进制数
int a, b, c, d;
cin>> a>> oct>> b>> hex>> c>> d; // 以十进制读入a,以八进制读入b,以十六进制读入c,d
4. 分别以defaultfloat、fixed、scientific格式输出浮点数1234567.89,并比较其精度。
cout<< 1234567.89<< "\t(defaultfloat)\n"
<< fixed<< 1234567.89 << "\t(fixed)\n"
<< scientific<< 1234567.89<< "\t(scientific)\n";
比较输出结果:
fixed的精度最高。
fixed | 小数表示 |
scientific | 科学记数法 |
defaultfloat | 在defaultfloat的精度范围内自动选择fixed或scientific中更为精确的一种表示。 默认设置下,defaultfloat格式使用6位数字来输出一个浮点值,四舍五入。 |
// 设置精度
setprecision()
浮点数精度 | |
defaultfloat | 精度为数字的个数 |
scientific | 精度为小数点之后的数字个数 |
fixed | 精度为小数点之后的数字个数 |
5. 设置位宽
setw();