代码改变世界

cout的输出格式初探

2015-07-09 09:36  GarfieldEr007  阅读(761)  评论(0编辑  收藏  举报

在C++中,cout代表的是标准输出设备,即显示器,相对于C语言中所使用的printf函数,cout显得更为灵活。下面以30、300和1024三个数为例子,简单说明cout输出时所选格式的输出。cout默认以十进制方式输出数值,也可以设置为八进制(oct)、十六进制(hex)输出方式,同时还可以显示输出方式的基指示符(进制标识符,例如八进制的O,十六进制的Ox)。

 1 //设置输出格式
 2 #include <iostream>
 3 #include <iomanip>
 4 using namespace std;
 5 int main()
 6 {    
 7     cout<<"please input a string"<<endl;
 8     char str[20];
 9     cin>>str; //cin默认以空格作为定界符,考虑使用getline()函数
10     cout<<"str = "<<str<<endl;
11     
12     cout<<"----------------"<<endl;
13 
14     int x = 20, y = 300, z = 1024;
15     cout<<x<<' '<<y<<' '<<z<<endl;
16 
17     cout.unsetf(ios::dec); //取消十进制输出格式
18     cout.setf(ios::showbase | ios::uppercase); //showbase是基指示符,指示进制,uppercase只对于OX大写有效
19     cout<<x<<' '<<y<<' '<<z<<endl;
20     
21     cout.unsetf(ios::showbase | ios::uppercase); //取消showcase和uppercase
22     cout.setf(ios::oct); //设置八进制输出格式
23     cout<<x<<' '<<y<<' '<<z<<endl;
24 
25     cout.setf(ios::showbase | ios::uppercase);
26     cout<<x<<' '<<y<<' '<<z<<endl;
27     
28     cout.unsetf(ios::oct);
29     cout.unsetf(ios::showbase | ios::uppercase ); 
30     cout.setf(ios::hex); //设置十六进制输出格式
31     cout<<x<<' '<<y<<' '<<z<<endl;
32 
33     //cout.unsetf(ios::showbase | ios::lowercase ); //lowercase在此处不行
34     //cout<<x<<' '<<y<<' '<<z<<endl;
35 
36     cout.setf(ios::showbase | ios::uppercase);
37     cout<<x<<' '<<y<<' '<<z<<endl;
38 
39     cout.unsetf(ios::showbase | ios::uppercase);
40     cout.unsetf(ios::hex);
41     cout<<x<<' '<<y<<' '<<z<<endl;
42 
43     cout<<"----------------"<<endl;
44     cout<<x<<' '<<y<<' '<<z<<endl; //按十进制输出
45     cout<<oct<<x<<' '<<y<<' '<<z<<endl; //按八进制输出
46 
47     cout<<setiosflags(ios::showbase); //设置基指示符 //setiosflags设置
48     cout<<x<<' '<<y<<' '<<z<<endl; //仍按八进制输出
49     
50     cout<<resetiosflags(ios::showbase); //取消基指示符 //resetiosflags取消
51     cout<<hex<<x<<' '<<y<<' '<<z<<endl; //按十六进制输出
52     
53     //设置基指示符和数值中的字母大写输出
54     cout<<setiosflags(ios::showbase | ios::uppercase);
55     cout<<x<<' '<<y<<' '<<z<<endl; //仍按十六进制输出
56     
57     //取消基指示符和数值中的字母大写输出
58     cout<<resetiosflags(ios::showbase | ios::uppercase);
59     cout<<x<<' '<<y<<' '<<z<<endl; //仍按十六进制输出
60     
61     cout<<dec<<x<<' '<<y<<' '<<z<<endl; //按十进制输出
62 
63     return 0;
64 }

程序运行结果: