天天看点

《C和C++代码精粹》——1.9 格式化

本节书摘来自异步社区出版社《c和c++代码精粹》一书中的第1章,第1.9节,作者: 【美】chuck allison,更多章节内容可以访问云栖社区“异步社区”公众号查看。

c和c++代码精粹

在程序清单1.8中ios::skipws是一个格式化标志的例子。格式化标志是位掩码值,该位掩码值可以通过成员函数setf来设置,也可用unsetf复位(见表1.1的完整描述)。

程序清单1.9的程序阐述了数字的格式化。标准流成员函数precision用来指定浮点值显示的小数位数。如果没有设置ios::showpoint标志,那么末尾的零不被显示。要用前置加号来打印正数,就用ios::showpos。在上例中想要以16进制形式显示x 和在指数形式中显示大写e,使用ios::uppercase。

程序清单1.7 计算文本文件中的字数

程序清单1.8 与程序copy1.cpp完全相同,但使用提取运算符读取空格

表1.1 格式化标志

《C和C++代码精粹》——1.9 格式化

一些格式化选项可以具有一定范围的值。例如,用来确定显示整型数基数的ios::basefield可以被设置成10进制、8进制或16进制。(见表1.2中3种格式化域有效的描述)由于这些是位域而不是单个的位,可用带两个参数形式的setf来设置。例如,程序清单1.10的程序设置8进制数模式采用下面语句:

cout.setf ( ios::oct,ios::basefield );

用标志ios::showbase进行设置时,8进制以0开头,16进制以0x开头打印输出(或者以0x开头打印输出,如果ios::uppercase也被设置)。

程序清单1.9 描述数据格式化

表1.2 格式化域

《C和C++代码精粹》——1.9 格式化

程序清单1.10 显示整数的基数

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。