aihot  2020-11-12 09:24:27  OpenCV |   查看评论   

操纵符用于两大类输出控制:控制数值的输出形式以及控制补白的数量和位置,大多数改变格式状态的操纵符都是设置/复原成对的:一个操纵符用来将格式状态设置为一个新值,而另一个用来将其复原,恢复为正常默认格式。

8.2 控制布尔值的格式

通过设置boolalpha可以将bool型变量的true输出为true或将false输出为false。可以设置noboolalpha来将内部状态恢复为默认格式。

// modify boolalpha flag
#include <iostream>     // std::cout, std::boolalpha, std::noboolalpha

int main () {   bool b = true;   std::cout << std::boolalpha << b << '\n';   std::cout << std::noboolalpha << b << '\n';   return 0; }

8.3 指定整形值的进制

默认情况是以十进制格式输出,我们可以设置不同的格式操纵符来改变输出整型值的进制。

oct:以八进制显示

hex:以十六进制显示

dec:以十进制显示

另外可以使用showbase操纵符来显式格式的前缀,8进制前有前导0,十六进制有前导0x。操纵符noshowbase恢复cout的状态,从而不再显示整型值的进制。有时候我们需要将16进制输出为大写如0X FF,可以用操纵符uppercase和nouppercase来控制流输出的大小写状态。

cout << uppercase << showbase << hex << 20 << 1024 
        << nouppercase << noshowbase << dec << endl;

8.4 控制浮点数格式

打印精度是通过precision成员或使用setprecision操纵符来改变。其中precision是一个重载函数,一个版本接受int参数,将精度设置为此值,并返回旧精度值。另外一个版本不接受参数,返回当前精度值。setprecision操纵符接受一个参数,用来设置精度。

用scientific用来指定科学记数法,fixed指定为定点十进制,hexfloat指定为十六进制的浮点数。defaultfloat将流恢复到默认的状态。

设置showpoint可以用来强制打印小数。

8.5 输出补白

setw:指定下一个数字或字符串的最小空间

left:表示左对齐输出。

right:表示右对齐输出,右对齐是默认格式。

internal:控制负数的符号的位置,它左对齐符号,右对齐值,用空格填满所有中间空间。

setfill:允许指定一个字符代替默认的空格来补白输出。

 1 int i = -16;   2 double d = 3.14159;   3 cout << "i:" << setw(12) << i << '\n' 
 4 << "d:" << setw(12) << d << '\n';   5 cout << left   6 << "i:" << setw(12) << i << '\n' 
 7 << "d:" << setw(12) << d << '\n';   8 cout << right   9 << "i:" << setw(12) << i << '\n' 
10 << "d:" << setw(12) << d << '\n';  11 cout << internal 
12 << "i:" << setw(12) << i << '\n' 
13 << "d:" << setw(12) << d << '\n';  14 cout << setfill('#')              
          
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自C++的那些事:流与IO类

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]