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 }
程序运行结果: