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

  • 相关阅读:
    android 中文 api (43) —— Chronometer
    SVN客户端清除密码
    Android 中文 API (35) —— ImageSwitcher
    Android 中文API (46) —— SimpleAdapter
    Android 中文 API (28) —— CheckedTextView
    Android 中文 API (36) —— Toast
    Android 中文 API (29) —— CompoundButton
    android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
    Android 中文 API (30) —— CompoundButton.OnCheckedChangeListener
    Android 中文 API (24) —— MultiAutoCompleteTextView.CommaTokenizer
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/12650114.html
Copyright © 2011-2022 走看看