流操纵算子

image.png

整数流的基数:流草追踪算子dec,oct,hex

  1. int n = 10;
  2. cout << n << endl;
  3. cout << hex << n << endl;
  4. cout << hex << n << endl;
  5. cout << dec << n << endl;
  6. cout << oct << n << endl;
  7. /* 输出结果
  8. 10
  9. a
  10. 10
  11. 12
  12. */

控制浮点精度的流操纵算子

image.png

非定点方式输出

image.png

  • 缺省情况下,默认非定点方式

    定点方式输出

    image.png

    取消定点方式输出

    image.png

    设置域宽的流操纵算子

    image.png
    image.png

  • cin.width(5)包括最后一个‘\0‘在内,一共5个字符

    1. #include <iostream>
    2. #include <iomanip>
    3. using namespace std;
    4. void main() {
    5. int n = 141;
    6. // 1) 分别以十六进制、十进制、八进制先后输出n
    7. cout << "1) " << hex << n << " " << dec << n << " " << oct << n << endl;
    8. double x = 1234567.89, y = 12.34567;
    9. // 2) 保留5位有效数字
    10. cout << "2) " << setprecision(5) << x << " " << y << " " << endl;
    11. // 3) 保留小数点后5位
    12. cout << "3) " << fixed << setprecision(5) << x << " " << y << endl;
    13. // 4) 科学计数法输出,且保留小数点后5位
    14. cout << "4) " << scientific << setprecision(5) << x << " " << y << endl;
    15. // 5) 非负数要小时正号,输出宽度的为12字符,宽度不足用'*'填充
    16. cout << "5) " << showpos << fixed << setw(12) << setfill('*') << 12.1 << endl;
    17. // 6) 非负数不显示正号,输出宽度为12字符,宽度不足则右边用填充字符填充
    18. cout << "6) " << noshowpos << setw(12) << left << 12.1 << endl;
    19. // 7) 输出宽度为12字符,宽度不足则左边用填充字符填充
    20. cout << "7) " << setw(12) << right << 12.1 << endl;
    21. // 8) 宽度不足时,负号和数值分列左右,中间用填充字符填充
    22. cout << "8) " << setw(12) << internal << -12.1 << endl;
    23. cout << "9) " << 12.1 << endl;
    24. }
    25. /* 输出
    26. 1) 8d 141 215
    27. 2) 1.2346e+006 12.346
    28. 3) 1234567.89000 12.34567
    29. 4) 1.23457e+006 1.23457e+001 // 与2)输出不同,因为3)设置的fixed对4)也有效
    30. 5) ***+12.10000 // 上面的setprecision()对下面的都有效
    31. 6) 12.10000****
    32. 7) ****12.10000
    33. 8) -***12.10000
    34. 9) 12.10000
    35. */

    用户自定义流操纵算子

    image.png
    image.png

  • 会把cout作为参数交给函数