C++ cout成员方法格式化输出
发布时间:2023-06-14 13:23:55 所属栏目:语言 来源:
导读:ostream 类中还包含一些可实现格式化输出的成员方法,这些成员方法都是从 ios 基类(以及 ios_base 类)中继承来的,cout(以及 cerr、clog)也能调用。
ostream 类的成员方法
成员函数 说明
flags(fmtfl
ostream 类的成员方法
成员函数 说明
flags(fmtfl
|
ostream 类中还包含一些可实现格式化输出的成员方法,这些成员方法都是从 ios 基类(以及 ios_base 类)中继承来的,cout(以及 cerr、clog)也能调用。 ostream 类的成员方法 成员函数 说明 flags(fmtfl) 当前格式状态全部替换为 fmtfl。注意,fmtfl 可以表示一种格式,也可以表示多种格式。 precision(n) 设置输出浮点数的精度为 n。 width(w) 指定输出宽度为 w 个字符。 fill(c) 在指定输出宽度的情况下,输出的宽度不足时用字符 c 填充(默认情况是用空格填充)。 setf(fmtfl, mask) 在当前格式的基础上,追加 fmtfl 格式,并删除 mask 格式。其中,mask 参数可以省略。 unsetf(mask) 在当前格式的基础上,删除 mask 格式。 其中,对于表 1 中 flags() 函数的 fmtfl 参数、setf() 函数中的 fmtfl 参数和 mask 参数以及 unsetf() 函数 mask 参数,可以选择表 2 中列出的这些值。 fmtfl 和 mask 参数可选值 标 志 作 用 ios::boolapha 把 true 和 false 输出为字符串 ios::left 输出数据在本域宽范围内向左对齐 ios::right 输出数据在本域宽范围内向右对齐 ios::internal 数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充 ios::dec 设置整数的基数为 10 ios::oct 设置整数的基数为 8 ios::hex 设置整数的基数为 16 ios::showbase 强制输出整数的基数(八进制数以 0 开头,十六进制数以 0x 打头) ios::showpoint 强制输出浮点数的小点和尾数 0 ios::uppercase 在以科学记数法格式 E 和以十六进制输出字母时以大写表示 ios::showpos 对正数显示“+”号 ios::scientific 浮点数以科学记数法格式输出 ios::fixed 浮点数以定点格式(小数形式)输出 ios::unitbuf 每次输出之后刷新所有的流 举个例子: #include <iostream> using namespace std; int main() { double a = 1.23; //设定后续输出的浮点数的精度为 4 cout.precision(4); cout <<"precision: "<< a << endl; //设定后续以科学计数法的方式输出浮点数 cout.setf(ios::scientific); cout <<"scientific:"<< a << endl; return 0; } 程序执行结果为: precision: 1.23 scientific:1.2300e+00 注意,当 cout 采用此方式进行格式化输出时,其后不能立即输出数据,而只能像示例程序中那样,再用一个 cout 输出数据。 值得一提的是,当调用 unsetf() 或者 2 个参数的 setf() 函数时,为了提高编写代码的效率,可以给 mask 参数传递如下 3 个组合格式: ios::adjustfield:等价于 ios::left | ios::right | ios::internal; ios::basefield:等价于 ios::dec | ios::oct | ios::hex; ios::floatfield:等价于 ios::scientific | ios::fixed。 举个例子: #include <iostream> using namespace std; int main() { double f = 123; //设定后续以科学计数法表示浮点数 cout.setf(ios::scientific); cout << f << '\n'; //删除之前有关浮点表示的设定 cout.unsetf(ios::floatfield); cout << f; return 0; } 程序执行结果为: 1.230000e+02 123 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
