使用cout来进行格式化输出
来源:互联网 发布:淘宝比价软件app 编辑:程序博客网 时间:2024/04/28 13:22
1.修改显示时使用的计数系统
ostream类是从ios类派生来的,而后者是从ios_base派生来的。ios_base类存储了描述格式状态的信息。例如,一个类成员中某些位决定了使用的计数系统,而另一个成员则决定了字段宽度。通过使用控制符,可以控制显示整数时使用的计数系统。通过使用ios_base的成员函数,可以控制字段的宽度和小数位数。
要控制整数以十进制、十六进制、八进制显示,可以使用dec、hex和oct控制符。
例如:
#include <iostream>int main(){ using namespace std; cout<<"Enter an integer: "; int n; cin>>n; cout<<"n n*n\n";//默认输出 cout<<n<<" "<<n*n<<"(decimal)\n"; cout<<hex;//十六进制输出 cout<<n<<" "<<n*n<<"(hexadecimal)\n"; cout<<oct<<n<<" "<<n*n<<"(octal)\n";//八进制输出 dec(cout);//十进制输出 cout<<n<<" "<<n*n<<"(decimal)\n"; return 0;}
2.调整字符宽度
cout.width(int);
注意:width( )方法只影响接下来显示的一个项目,然后字段宽度将恢复为默认值
3.填充字符
cout.fill('*');//用 * 来填充字段中未被使用的部分
注意:与字段宽度不同的是,新的填充字符将一直有效,直到更改它为止。
4.设置浮点数的显示精度
cout.precision(5);//设置精度为5
5.打印末尾的0和小数点
cout.setf(ios_base::showpoint);
setf( )是ios_base类中的一个格式化函数,setf( )有两个原型。第一个为:
fmtflags setf(fmtflags);
其中,fmtflags是bitmask类型的typedef名,用于存储格式标记。这个版本的setf( )是用来设置单位控制的格式信息。
有下面一些格式常量:
ios_base::boolalpha 输入和输出bool值,可以为true或false ios_base::showbase 对于输出,使用C++基数前缀(O,Ox) ios_base::showpoint 显示末尾的小数点 ios_base::uppercase 对于16进制输出,使用大写字母,E表示法 ios_base::showpos 在正数前面加上+
第二个setf( )原型接受两个参数,并返回以前的设置:
fmtflags setf(fmtflags, fmtflags);
函数的这种重载格式用于设置由多位控制的格式选项。第一个参数和以前一样,也是包含了所需设置的fmtflags值,第二个参数指出要清楚第一个参数中的哪些位。
setf(long, long)的参数
看下面的例子:
#include <iostream>#include <cmath>int main(){ using namespace std; cout.setf(ios_base::left,ios_base::adjustfield);//左对齐 cout.setf(ios_base::showpos);//在正数前面加上+ cout.setf(ios_base::showpoint);//显示末尾的小数点 cout.precision(3);//精度为3 ios_base::fmtflags old = cout.setf(ios_base::scientific,ios_base::floatfield); cout<<"Left Justification:\n"; long n; for(n = 1; n <= 41; n += 10) { cout.width(4);//字段宽度为4 cout<<n<<"|"; cout.width(12);//字段宽度为12 cout<<sqrt(double(n))<<"|\n"; } cout.setf(ios_base::internal,ios_base::adjustfield);//符号或基数前缀左对齐,值右对齐 cout.setf(old,ios_base::floatfield);//恢复以前的格式设置 cout<<"Internal Justification:\n"; for(n = 1; n <= 41; n += 10) { cout.width(4); cout<<n<<"|"; cout.width(12); cout<<sqrt(double(n))<<"|\n"; } cout.setf(ios_base::right,ios_base::adjustfield);//右对齐 cout.setf(ios_base::fixed,ios_base::floatfield);//使用定点计数法 cout<<"Right Justification:\n"; for(n = 1; n <= 41; n += 10) { cout.width(4); cout<<n<<"|"; cout.width(12); cout<<sqrt(double(n))<<"|\n"; } return 0;}
输出结果为:
Left Justification:
+1 |+1.000e+000 |
+11 |+3.317e+000 |
+21 |+4.583e+000 |
+31 |+5.568e+000 |
+41 |+6.403e+000 |
Internal Justification:
+ 1|+ 1.00|
+ 11|+ 3.32|
+ 21|+ 4.58|
+ 31|+ 5.57|
+ 41|+ 6.40|
Right Justification:
+1| +1.000|
+11| +3.317|
+21| +4.583|
+31| +5.568|
+41| +6.403|
- 使用cout来进行格式化输出
- 使用cout进行格式化输出(1)
- 使用cout进行格式化输出(2)
- 使用cout进行输出
- 使用cout格式化输出字符串
- 使用cout格式化输出字符串
- 使用cout格式化输出字符串
- 使用cout格式化输出字符串
- 使用cout格式化输出字符串
- 使用cout格式化输出字符串
- [c++ primer plus]使用cout格式化输出
- 使用cout格式化输出字符串 (转)
- CPP-如何使用cout格式化输出字符串
- 如何在C++中使用cout进行高级的格式化输出操作
- cout 格式化输出
- cout格式化输出示例
- cout格式化输出
- cout格式化输出 详解
- 1051. Pop Sequence (25)
- 嵌入式 详解udev
- Pie poj 二分求最大平均值
- CDilog::DoModal调用失败,原因分析
- 【NOI2007】【BZOJ1492】货币兑换Cash
- 使用cout来进行格式化输出
- 198House Robber
- 网络爬虫初步(一)
- UINavigationController实例之私人通讯录
- 有关Servlet初始化参数的获取方法
- 嵌入式 使用udev高效、动态地管理Linux 设备文件
- HDU 1686 Oulipo
- 黑马程序员_C语言冒泡算法和约瑟夫循环分析
- 最长公共子序列