常见的数值进制包括八进制、十进制和十六进制。这3种进制分别用3种标识:oct、dec和hex。标识oct代表是以八进制形式进行读写;标识dec代表是以十进制形式进行读写;标识hex代表是以十六进制形式进行读写。若使用参数none,则代表以十进制形式输出,在读入时要根据起始字符的实际情况而定。
一旦进制被改变,除非重新设置相关标识,否则会持续应用于后继的整数处理过程。默认情况下使用十进制。如果没有使用进制标识或使用了多个进制标识,输出时会采用十进制。输入流和输出流(IOStream)不支持二进制,使用二进制进行读写时,可使用类bitset,实现以二进制形式读写整数值。
在输入时,进制标识有时也会产生影响。上述的进制标识被设置后,读取的数字会按该进制处理。如果没有设置进制标识,起始字符将决定进制。例如,以0x或0X起始的为十六进制数,以O起始的为八进制数,其余被视为十进制数。
标识showbase会以C/C++惯例处理数值进制。标识showbase一旦被设置,在输出数值时,会自动显示出相应的数字进制。八进制会自动以O开头,十六进制会以0x或0X开头。整数进制的操作标识符及其意义见表7-2。
表7-2 整数进制
使用上述数值标识一般有两种方法:使用setf()函数直接设置需要指定的标识;使用unsetf()函数直接设置需要指定的标识。在设置标识时,同时自动清理同组的其他标识。setf()函数和unsetf()函数的原型为:
(www.xing528.com)
和
其中setf()函数的第二种形式的第一个参数_Mask是需要打开的标识符,第二个参数_Unset是需要关闭的标识符。该形式的返回值是原有的标识符。例如,
上述代码的输出结果为:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。