在C中,如果存在一个int变量,我们要将其转换为八进制、十六进制等输出的时候,这个是非常简单的,只需要在printf的时候选择相对应的就行了。
但是在C++中,如果单纯的使用cout,这个是怎么实现的呢?
要控制整数以什么形式来显示,可以使用dec、hex、oct控制符,例如:
hex(cout);
将cout对象的格式设置为十六进制,完成上述设置后,程序将以十六进制形式打印整数值,直到其他选项来改变格式状态为止。
(需要注意的是,控制符不是成员函数,因此不需要通过对象来调用)
通常的使用方式为:
cout<<hex;
例:
1 #include<iostream> 2 int main() { 3 using namespace std; 4 cout << "enter:"; 5 int n; 6 cin >> n; 7 8 cout << hex; 9 cout << n << "\n"; 10 11 cout << oct << n << "\n"; 12 13 dec(cout); 14 cout << n << "\n"; 15 16 return 0; 17 }
运行情况为:
enter:13 d 15 13
除了转换进制外,还有其他需要特别注意的地方:
在新式实现中,浮点类型被显示为6位,末尾的0不显示。数字以定点表示法显示还是以科学计数法表示,取决于它的值。具体来说,当指数大于等于6或小于等于-5时,将使用科学计数法表示。如:
double f = 1.200; cout << f << "\n"; cout << (f + 1.0 / 9.0) << “/n”; double f1 = 1.67E2; cout << f1 << "\n"; cout << (f1 * 1.0e4) << "\n";
输出就变为:
1.2 1.31111 167 1.67e+006
1.200末尾的0没有显示出来,但末尾不带0的浮点值后面将有6个空格