C++ cout.setf() 格式化输出

素颜马尾好姑娘i 2022-01-27 00:57 452阅读 0赞

学过C语言的都知道 ,对于C语言的格式化输出很简单的,毕竟是面向过程的语言.

例如: 输出特定的位数:

float a = 10.0;

printf(“%3.3f”,a);

输出的结果就是10.000了.

3.3的含义就是: 对于第一个3 没啥作用,对于小数点后的3代表 小数点后保留三位.在这里就不在列举其他的了,有兴趣的可以试试其他书.下面我们进入正题.

setf()有两种原型,分别是:

  1. 1.fmtflags setf(fmtflags) //原型一
  2. 2.fmtflags setf(fmtflags,fmtflags) //原型二
  3. // fmtflags 是 bitmask 类型(一种用来存储各个位值的类型)的typedef 名
  4. // 显而易见,两个原型的区别就在参数的个数上

setf()的第一个原型:

C++ 为标准输入和输出定义了一些格式标志,他可以通过flags() setf() 和 unsetf() 这函数来控制.

例如:

cout.setf(ios_base::left); //表示对所有的cout的输出进行左对齐调整.

还有一些常见的标志:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseV9za3lfc2hhcmU_size_16_color_FFFFFF_t_70

// 形式一:

  1. cout << showpos << 255 <<endl;

//形式二:
showpos(cout);
cout << 255 <<endl;
//形式三:

  1. cout.setf(ios\_base::showpos);
  2. cout << 255 <<endl;

结果:

+255
+255
+255

也可以通过使用下面的操作符:

例如当我们设置dec和 标志时;

cout << dec; // 设置dec 表示

设置endl 标志时

cout << endl; //输出换行标识,并清空缓存区

iostream中定义的操作符:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseV9za3lfc2hhcmU_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseV9za3lfc2hhcmU_size_16_color_FFFFFF_t_70 2

iomanip中定义的操作符:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseV9za3lfc2hhcmU_size_16_color_FFFFFF_t_70 3

  1. \#include <iomanip>
  2. cout << setiosflags(ios\_base::scientific) << 255.255 << endl;
  3. cout << setiosflags(ios\_base::scientific); //启用scientific标志
  4. cout << resetiosflags(ios\_base::scientific); //关闭scientific标志
  5. cout << setprecision(4) << 255.255 << endl; //设置输出数值的精度为4位

2.552550e+02
255.3

setf()的第二原形:

第二原型包含两个参数,第一个参数和第一原型里的参数一样,第二个参数指出要清除第一参数中的哪些位,也就是说,在第二原型中,第一个参数指出要设置哪些位,第二个参数指出要清除哪些位。

虽然听起来很麻烦,但实际上用起来却很简单,只需按自己的实际需求在下表中找到对应的参数套上去就可以了。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseV9za3lfc2hhcmU_size_16_color_FFFFFF_t_70 4

发表评论

表情:
评论列表 (有 0 条评论,452人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++ cout格式化输出

    希望按照一定的格式进行输出,如按十六进制输出整数,输出浮点数时保留小数点后面两位,输出整数时按 6 个数字的宽度输出,宽度不足时左边补 0,等等。C++ 中的 cout 对象则