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

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

例如: 输出特定的位数:

float a = 10.0;

printf("%3.3f",a);

输出的结果就是10.000了.

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

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

1.fmtflags setf(fmtflags)  //原型一
2.fmtflags setf(fmtflags,fmtflags) //原型二

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

setf()的第一个原型:

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

例如: 

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

 还有一些常见的标志:

 // 形式一:

    cout << showpos << 255 <<endl;

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

    cout.setf(ios_base::showpos);
    cout << 255 <<endl;

结果:

+255
+255
+255

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

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

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

设置endl 标志时

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

 iostream中定义的操作符:

iomanip中定义的操作符:

    #include <iomanip>

    cout << setiosflags(ios_base::scientific) << 255.255 << endl;
    cout << setiosflags(ios_base::scientific); //启用scientific标志
    cout << resetiosflags(ios_base::scientific); //关闭scientific标志
    cout << setprecision(4) << 255.255 << endl; //设置输出数值的精度为4位

2.552550e+02
255.3
 

 setf()的第二原形:

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

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章