zoukankan      html  css  js  c++  java
  • C++格式化输出 Learner

    一.使用控制符控制输出格式

    #include <iostream>
    #include <iomanip>//不要忘记包含此头文件
    using namespace std;
    int main()
    {
       int a;
       cout<<"input a:";
       cin>>a;
       cout<<"dec:"<<dec<<a<<endl;  //以十进制形式输出整数
       cout<<"hex:"<<hex<<a<<endl;  //以十六进制形式输出整数a
       cout<<"oct:"<<setbase(8)<<a<<endl;  //以八进制形式输出整数a
       char *pt="China";  //pt指向字符串"China"
       cout<<setw(10)<<pt<<endl;  //指定域宽为,输出字符串
       cout<<setfill('*')<<setw(10)<<pt<<endl;  //指定域宽,输出字符串,空白处以'*'填充
       double pi=22.0/7.0;  //计算pi值
       //按指数形式输出,8位小数
       cout<<setiosflags(ios::scientific)<<setprecision(8);
       cout<<"pi="<<pi<<endl;  //输出pi值
       cout<<"pi="<<setprecision(4)<<pi<<endl;  //改为位小数
       cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl;  //改为小数形式输出
       return 0;
    }

    输出结果:

    input a:34↙(输入a的值)
    dec:34                   (十进制形式)
    hex:22                   (十六进制形式)
    oct:42                   (八进制形式)
             China               (域宽为)
    *****China               (域宽为,空白处以'*'填充)
    pi=3.14285714e+00        (指数形式输出,8位小数)
    pi=3.1429e+00            (指数形式输出,4位小数)
    pi=3.143                 (小数形式输出,精度仍为)

    二.使用流对象的成员函数控制输出

    除了可以用控制符来控制输出格式外,还可以通过调用流对象cout中用于控制输出格式的成员函数来控制输出格式。用于控制输出格式的常用的成员函数,如:

    流成员函数与之作用相同的控制符作用
    precision(n) setprecision(n) 设置实数的精度为n位
    width(n) setw(n) 设置字段宽度为n位
    fill(c) setfill(c) 设置填充宇符c
    setf() setiosflags() 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中的内容相同,如表13.5所示
    unsetf() resetioflags() 终止已设置的输出格式状态,在括号中应指定内容

     

    流成员函数setf和控制符setiosflags括号中的参数表示格式状态,它是通过格式标志来指定的。格式标志在类ios中被定义为枚举值。因此在引用这些格式标志时要在前面加上类名ios和域运算符“::”

    格式标志作用
    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 每次输出之后刷新所有的流
    ios::stdio 每次输出之后清除stdout, stderr
     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5 
     6 
     7    int a = 21;
     8    cout.setf(ios::showbase);        // 显示基数符号(0x或)
     9    cout<<"dec:"<<a<<endl;           // 默认以十进制形式输出
    10    cout.unsetf(ios::dec);           // 终止十进制格式设置
    11 
    12    cout.setf(ios::hex);             // 设置以十六进制形式输出
    13    cout<<"hex:"<<a<<endl;
    14    cout.unsetf(ios::hex);           // 终止十六进制形式输出
    15 
    16    cout.setf(ios::oct);             // 设置以八进制形式输出
    17    cout<<"oct:"<<a<<endl;
    18    cout.unsetf(ios::oct);           // 终止八进制形式输出
    19 
    20    char *pt = "China";
    21    cout.width(10);                  // 指定域宽为10
    22    cout<<pt<<endl;
    23 
    24    cout.width(10);                  // 指定域宽为10
    25    cout.fill('*');                  // 设置空白处以*号填充
    26    cout<<pt<<endl;
    27 
    28    double pi = 22.0/7.0;            // 输出PI值
    29    cout.setf(ios::scientific);      // 设置以科学计数法形式输出
    30    cout<<"pi=";
    31    cout.width(14);                  // 设置域宽为14
    32    cout<<pi<<endl;
    33    cout.unsetf(ios::scientific);    // 终止科学计数法形式输出
    34 
    35    cout.setf(ios::fixed);           // 设置以定点形式输出
    36    cout.width(12);                  // 指定域宽为12
    37    cout.setf(ios::showpos);         // 正数输出+号
    38    cout.setf(ios::internal);        // 数符出现在左侧
    39    cout.precision(6);               // 保留位小数
    40    cout<<pi<<endl;
    41 
    42    return 0;
    43 }

    运行结果:

    dec:21(十进制形式)
    hex:0x15                 (十六进制形式,以x开头)
    oct:025                  (八进制形式,以开头)
             China               (域宽为)
    *****China               (域宽为,空白处以'*'填充)
    pi=**3.142857e+00        (指数形式输出,域宽,默认位小数)
    +***3.142857             (小数形式输出,精度为,最左侧输出数符“+”)

     

    因上求缘,果上努力~~~~ 作者:Learner-,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/12650114.html

  • 相关阅读:
    jira:7.12.3版本搭建(破解版)
    traefik添加多证书
    人肉分析sorted(lst, key=lambda x: (x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.islower(), x.isupper(), x))过程
    jquery实现checkbox全选/反选/取消
    k8s简单集群搭建
    第十二周编程总结
    第十周作业
    第九周编程总结
    第七周编程总结
    第五周编程总结
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/12650114.html
Copyright © 2011-2022 走看看