精华内容
下载资源
问答
  • c++输出格式
    千次阅读
    2021-06-14 22:29:27
        %d              十进制有符号整数 
        %u              十进制无符号整数 
        %f              浮点数 
        %s              字符串 
        %c              单个字符 
        %p              指针的值 
        %e              指数形式的浮点数 
        %x, %X          无符号以十六进制表示的整数 
        %0              无符号以八进制表示的整数 
        %g              自动选择合适的表示法 
    
    可以在"%"和字母之间加小写字母l, 表示输出的是长型数。 
           %ld   表示输出long整数 
           %lf   表示输出double浮点数
    
    可以在"%"和字母之间插进数字表示最大场宽。 
           例如:  %3d   表示输出3位整型数, 不够3位右对齐。 
                     %9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6, 
                      小数点占一位, 不够9位右对齐。 
                      %8s   表示输出8个字符的字符串, 不够8个字符右对齐。 
           如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。 
    但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出; 
    若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。 
           另外, 若想在输出值前加一些0, 就应在场宽项前加个0。 
           例如:   %04d  表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。 
           如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度, 小数点前的数字代表最小宽度。
           例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9,  则第9个字符以后的内容将被删除。
    
            可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可说明输出为左对齐, 否则为右对齐。 
            例如:   %-7d  表示输出7位整数左对齐 
                       %-10s 表示输出10个字符左对齐
    更多相关内容
  • C++输出格式控制大全

    千次阅读 多人点赞 2019-06-29 11:04:44
    有时希望按照一定的格式进行输出,如按十六进制输出整数,输出浮点数时保留小数点后面两位,输出整数时按 6 个数字的宽度输出,宽度不足时左边补 0,等等。C语言中的 printf() 函数使用以%开头的格式控制符,例如 %X...

    有时希望按照一定的格式进行输出,如按十六进制输出整数,输出浮点数时保留小数点后面两位,输出整数时按 6 个数字的宽度输出,宽度不足时左边补 0,等等。C语言中的 printf() 函数使用以%开头的格式控制符,例如 %X、%.2f、%6d 等;C++ 中的 cout 对象则使用流操作算子(你也可以叫做格式控制符)或者成员函数进行控制。

    使用流操作算子

    C++ 中常用的输出流操纵算子如表 1 所示,它们都是在头文件 iomanip 中定义的;要使用这些流操纵算子,必须包含该头文件。

    注意:“流操纵算子”一栏中的星号*不是算子的一部分,星号表示在没有使用任何算子的情况下,就等效于使用了该算子。例如,在默认情况下,整数是用十进制形式输出的,等效于使用了 dec 算子。

    表1:C++ 流操纵算子
    流操纵算子作  用
    *dec以十进制形式输出整数常用
    hex以十六进制形式输出整数
    oct以八进制形式输出整数
    fixed以普通小数形式输出浮点数
    scientific以科学计数法形式输出浮点数
    left左对齐,即在宽度不足时将填充字符添加到右边
    *right右对齐,即在宽度不足时将填充字符添加到左边
    setbase(b)设置输出整数时的进制,b=8、10 或 16
    setw(w)指定输出宽度为 w 个字符,或输人字符串时读入 w 个字符
    setfill(c)在指定输出宽度的情况下,输出的宽度不足时用字符 c 填充(默认情况是用空格填充)
    setprecision(n)设置输出浮点数的精度为 n。

    在使用非 fixed 且非 scientific 方式输出的情况下,n 即为有效数字最多的位数,如果有效数字位数超过 n,则小数部分四舍五人,或自动变为科学计 数法输出并保留一共 n 位有效数字。

    在使用 fixed 方式和 scientific 方式输出的情况下,n 是小数点后面应保留的位数。
    setiosflags(flag)将某个输出格式标志置为 1
    resetiosflags(flag)将某个输出格式标志置为 0
    boolapha把 true 和 false 输出为字符串不常用
    *noboolalpha把 true 和 false 输出为 0、1
    showbase输出表示数值的进制的前缀
    *noshowbase不输出表示数值的进制.的前缀
    showpoint总是输出小数点
    *noshowpoint只有当小数部分存在时才显示小数点
    showpos在非负数值中显示 +
    *noshowpos在非负数值中不显示 +
    *skipws输入时跳过空白字符
    noskipws输入时不跳过空白字符
    uppercase十六进制数中使用 A~E。若输出前缀,则前缀输出 0X,科学计数法中输出 E
    *nouppercase十六进制数中使用 a~e。若输出前缀,则前缀输出 0x,科学计数法中输出 e。
    internal数值的符号(正负号)在指定宽度内左对齐,数值右对 齐,中间由填充字符填充。

    流操作算子的使用方法

    使用这些算子的方法是将算子用 << 和 cout 连用。例如:

     
    1. cout << hex << 12 << "," << 24;

    这条语句的作用是指定以十六进制形式输出后面两个数,因此输出结果是:
    c, 18

    setiosflags() 算子

    setiosflags() 算子实际上是一个库函数,它以一些标志作为参数,这些标志可以是在 iostream 头文件中定义的以下几种取值,它们的含义和同名算子一样。

    表2:setiosflags() 可以使用的标志及其说明
    标 志作 用
    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,而其他比特位都为 0 的整数。

    多个标志可以用|运算符连接,表示同时设置。例如:

     
    1. cout << setiosflags(ios::scientific|ios::showpos) << 12.34;

    输出结果是:
    +1.234000e+001

    如果两个相互矛盾的标志同时被设置,如先设置 setiosflags(ios::fixed),然后又设置 setiosflags(ios::scientific),那么结果可能就是两个标志都不起作用。因此,在设置了某标志,又要设置其他与之矛盾的标志时,就应该用 resetiosflags 清除原先的标志。例如下面三条语句:

     
    1. cout << setiosflags(ios::fixed) << 12.34 << endl;
    2. cout << resetiosflags(ios::fixed) << setiosflags(ios::scientific | ios::showpos) << 12.34 << endl;
    3. cout << resetiosflags(ios::showpos) << 12.34 << endl; //清除要输出正号的标志

    输出结果是:
    12.340000
    +1.234000e+001
    1.234000e+001

    综合示例

    关于流操纵算子的使用,来看下面的程序。

     
    1. #include <iostream>
    2. #include <iomanip>
    3. using namespace std;
    4. int main()
    5. {
    6. int n = 141;
    7. //1) 分别以十六进制、十进制、八进制先后输出 n
    8. cout << "1)" << hex << n << " " << dec << n << " " << oct << n << endl;
    9. double x = 1234567.89, y = 12.34567;
    10. //2)保留5位有效数字
    11. cout << "2)" << setprecision(5) << x << " " << y << " " << endl;
    12. //3)保留小数点后面5位
    13. cout << "3)" << fixed << setprecision(5) << x << " " << y << endl;
    14. //4)科学计数法输出,且保留小数点后面5位
    15. cout << "4)" << scientific << setprecision(5) << x << " " << y << endl;
    16. //5)非负数显示正号,输出宽度为12字符,宽度不足则用 * 填补
    17. cout << "5)" << showpos << fixed << setw(12) << setfill('*') << 12.1 << endl;
    18. //6)非负数不显示正号,输出宽度为12字符,宽度不足则右边用填充字符填充
    19. cout << "6)" << noshowpos << setw(12) << left << 12.1 << endl;
    20. //7)输出宽度为 12 字符,宽度不足则左边用填充字符填充
    21. cout << "7)" << setw(12) << right << 12.1 << endl;
    22. //8)宽度不足时,负号和数值分列左右,中间用填充字符填充
    23. cout << "8)" << setw(12) << internal << -12.1 << endl;
    24. cout << "9)" << 12.1 << endl;
    25. return 0;
    26. }

    程序的输出结果是:
    1)8d 141 215
    2)1.2346e+06 12.346
    3)1234567.89000 12.34567
    4)1.23457e+06 1.23457e+01
    5)***+12.10000
    6)12.10000****
    7)****12.10000
    8)-***12.10000
    9)12.10000

    需要注意的是,setw() 算子所起的作用是一次性的,即只影响下一次输出。每次需要指定输出宽度时都要使用 setw()。因此可以看到,第 9) 行的输出因为没有使用 setw(),输出的宽度就不再是前面指定的 12 个字符。

    在读入字符串时,setw() 还能影响 cin 的行为。例如下面的程序:

     
    1. #include <iostream>
    2. #include <iomanip>
    3. using namespace std;
    4. int main()
    5. {
    6. string s1, s2;
    7. cin >> setw(4) >> s1 >> setw(3) >> s2;
    8. cout << s1 << "," << s2 << endl;
    9. return 0;
    10. }

    输入:
    1234567890↙

    程序的输出结果是:
    1234,567

    说明setw(4)使得读入 s1 时,只读入 4 个字符,其后的setw(3)使得读入 s2 时只读入 3 个字符。

    setw() 用于 cin 时,同样只影响下一次的输入。

    思考题:setw() 究竟是如何实现的,以至于能和 cout 连用来指定输出宽度?自行查看编译器所带的 iomanip 头文件,然后写一个功能和 setw() 完全相同的 mysetw()。

    调用cout的成员函数

    ostream 类有一些成员函数,通过 cout 调用它们也能用于控制输出的格式,其作用和流操纵算子相同,如表 3 所示。
     

    表3:ostream 类的成员函数
    成员函数作用相同的流操纵算子说明
    precision(n)setprecision(n)设置输出浮点数的精度为 n。
    width(w)setw(w)指定输出宽度为 w 个字符。
    fill(c)setfill (c)在指定输出宽度的情况下,输出的宽度不足时用字符 c 填充(默认情况是用空格填充)。
    setf(flag)setiosflags(flag)将某个输出格式标志置为 1。
    unsetf(flag)resetiosflags(flag)将某个输出格式标志置为 0。

     

    setf 和 unsetf 函数用到的flag,与 setiosflags 和 resetiosflags 用到的完全相同。

    这些成员函数的用法十分简单。例如下面的三行程序:

     
    1. cout.setf(ios::scientific);
    2. cout.precision(8);
    3. cout << 12.23 << endl;

    输出结果是:
    1.22300000e+001

    展开全文
  • C++输出格式控制

    万次阅读 多人点赞 2017-08-15 16:11:17
    setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6,所以不管数据是多少,都只输出六位。如果setprecision(n)与setiosflags(ios::fixed)或者setiosfla

    http://www.cnblogs.com/leewiki/archive/2011/12/13/2286168.html  转载与此博客


    setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6,所以不管数据是多少,都只输出六位。如果setprecision(n)与setiosflags(ios::fixed)或者setiosflags(ios_base::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。 如果与setiosnags(ios::scientific)合用,可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。

    I/O流常用控制符:

    使用控制符时,在程序开头加投文件#include <iomanip> C++有两种方法控制格式输出:1、用格式控制符;2、用流对象的成员函数 格式控制符:

    dec                                 设置基数为10

    hex                                 设置基数为16

    oct                                 设置基数为8

    setfill(c)                          设置填充字符c

    setprecision(n)                     设置显示小数精度为n位

    setw(n)                             设置域宽为n个字符

    setiosflags(ios::fixed)             固定的浮点显示

     setiosflags(ios::scientific)        指数表示

    setiosflags(ios::left)              左对齐

    setiosflags(ios::right)             右对齐

    setiosflags(ios::skipws)            忽略前导空白

    setiosflags(ios::uppercase)         16进制数大写输出

    setiosflags(ios::lowercase)         16进制小写输出

    成员函数:

    flags(10)                           设置基数为10

    flags(16)                           设置基数为16

    flags(8)                            设置基数为8

    flags(c)                            设置填充字符c

    precision(n)                        设置显示小数精度为n位

    width(n)                            设置域宽为n个字符

     在新版本的c++中头文件已经用iomanip取代了iomanip.h。

     

      以下是一些常用的函数:

     

      dec 置基数为10 相当于"%d"

     

      hex 置基数为16 相当于"%X"

     

      oct 置基数为8 相当于"%o"

     

      setfill(c) 设填充字符为c

     

      setprecision(n) 设显示小数精度为n位

     

      setw(n) 设域宽为n个字符

     

      setiosflags(ios::fixed) 固定的浮点显示

     

      setiosflags(ios::scientific) 指数表示

     

      setiosflags(ios::left) 左对齐

     

      setiosflags(ios::right) 右对齐

     

      setiosflags(ios::skipws 忽略前导空白

     

      setiosflags(ios::uppercase) 16进制数大写输出

     

      setiosflags(ios::lowercase) 16进制小写输出

     

      setiosflags(ios::showpoint) 强制显示小数点

     

      setiosflags(ios::showpos) 强制显示符号

     

    上面的内容我自己测试一些代码,不全,但是这个格式太多了,以后用到再来看看。

    复制代码
     1 #include <iostream>
     2 #include <iomanip>
     3 using namespace std;
     4 int main ()
     5 {
     6     double a=123456.343001;
     7     cout<<"a的值为123456.343001"<<endl<<endl; 
     8     cout<<"不做任何操作,默认情况下只显示6六位数据:"<<a<<endl<<endl;
     9     cout<<"指定10位小数且为浮点数表示setiosflags(ios::fixed):"<<setiosflags(ios::fixed)<<setprecision(10)<<a<<endl<<endl;
    10     cout<<"指定为10位小数且为指数形式表示setiosflags(ios::scientific),就是留下有效位:如何指定的有效位超过本来的有效位,其输出就是本身的位数:"<<setiosflags(ios::scientific)<<setprecision(12)<<a<<endl<<endl;
    11     cout<<"指定为10位小数且为指数形式表示setiosflags(ios::scientific),就是留下有效位:setprecision(10)指定留下10位有效位"<<setiosflags(ios::scientific)<<setprecision(10)<<a<<endl<<endl;
    12     cout<<"左对齐:"<<setiosflags(ios::left)<<setprecision(20)<<a<<endl<<endl;
    13     cout<<"右对齐:"<<setiosflags(ios::right)<<setprecision(20)<<a<<endl<<endl;
    14     system("pause");
    15     return 0;
    16 }
    复制代码

    下面是转载别人的,看别人弄得挺细,觉得挺好,就弄过来了。上面的内容也是一个网站看些弄出来的。

     


     

    可以不使用#include<iomanip>的

    cout.precision()设置小数点后精确度,

    cout.width()设置宽度,

    cout.setf()设置显示格式,比如

    cout.setf(ios::left)左对齐

    cout.setf(ios::showpoint)不管是否有小数位,显示小数点

    cout.fill();不足宽度则填充,如cout.fill('0');

    如这次周赛1002,如果使用COUT在输出前要这样设置一下。

    cout.precision(6);

    cout.width(8);

    cout.setf(ios::left);

    cout.setf(ios::showpoint);

    cout.fill('0');

    仅仅cout.precision(6)和cout.setf(ios::showpoint)时,不知何原因如果为0只显示到小

    数点后5位,所以为了在最后加个0,要加上其它3项补充(部分是iomanip里的):

    long flags( ) const 返回当前的格式标志。

    long flays(long newflag) 设置格式标志为newflag,返回旧的格式标志。

    long setf(long bits) 设置指定的格式标志位,返回旧的格式标志。

    long setf(long bits,long field)将field指定的格式标志位置为bits,返回旧的格式标志

    long unsetf(long bits) 清除bits指定的格式标志位,返回旧的格式标志。

    long fill(char c) 设置填充字符,缺省条件下是空格。

    char fill( ) 返回当前填充字符。

    int precision(int val) 设置精确度为val,控制输出浮点数的有效位,返回旧值。

    int precision( ) 返回旧的精确度值。

    int width(int val) 设置显示数据的宽度(域宽),返回旧的域宽。

    int width( )只返回当前域宽,缺省宽度为0。这时插入操作能按表示数据的最小宽度显示

    数据

    dec 十进制的输入输出

    hex 十六进制的输入输出

    oct 八进制的输入输出

    例如用cout<<hex<<i<<endl; 即可以让变量i以16进制的格式输出。

    ws 提取空白字符

    flush 刷新流

    resetiosflags(long) 请除特定的格式标志位

    setiosflags(long) 设置特定的格式标志位

    setfill(char) 设置填充字符

    setprecision(int) 设置输出浮点数的精确度

    setw(int) 设置域宽格式变量

    一:标准输入函数cin 不知道说它是个函数对还是不对,它是代表标准的输入设备--键盘。他是属于流的,他的用法和流的用法是一样的。也就是:cin>>变量;

    小小的说明一下,输入多个变量可以写在一行,如:cin>>x>>y>>z; 这样写不是不允许,而是不好看,如果是不同的变量类型,那就更是没头没脑了。除了你,人家是不知道该输入什么的

    ,所以,一般在输入语句的前面,我们一般都 要做一个提示,请输入×××,让人家心里有个底,知道这个变量是做什么的。 另外,这个函数是不用带地址符号"&"的,也不用写明变量类型,千万不要跟scanf混淆。当然他就也不检查变量输入是否合法。如:

    int i; cout<<"please input a number:" cin>>i; cout<<"i="<<i<<endl;

    如果你输入的是一个字符如'a'那么他也不检查,但你输出的结果不是正确的,这要是手工进行检查。当然他也跟scanf一样,如果在循环内部输入不合法的变量值,那么也将陷入死循环。如下:

    1 /*一个输入不合法变量陷入死循环的例子*/ #include <iostream.h> main() { int i; while(i!=-1) { cout<<"i=" cin>>i; /*请输入不是一个字符如'a'试试*/ cout<<endl; } }

     

    如上一个程序,如果你输入的不合法,那就将陷入死循环。解决的办法有个一,把cin>>i;语句移到判断循环的语句中,那么,你输入的如果是不合法的变量,他将跳出循环。 cin是用空格来分隔输入的。请看看如下的例子:

    /*一个空格分隔使输入的变量达不到希望的值*/ #include <iostream.h> main() { char str[20]; cout<<"please input a string:"; cin>>str; /*你试着输入"hello word"*/ cout<<endl<<"str="<<str; }

    看得到是什么结果呢?得到的仅仅是str=hello,为什么呢?因为cin是以空格为分隔的,当你输入一个空格时,那他就认为后面的输入不属于这里了, 认为应该给后面的变量了。另外,当你输入的字符串大于分配的空间时,还会出现溢出现象。当然,还有整行输入的函数,包括空格也一起输入了,以后也会学到。

    二、标准输出函数cout 说cout是函数,也跟cin一样,不知道对不对。他代表的是标准输出设备--显示器。其实前面已经用过很多次这个函数了。我们就通过一个例子来进行格式化的输出就是了,大家就体会体会这个例子就行了,比printf灵活了很多。 首先,我们可以按16进制,8进制和10进制来显示我们的数据,如下:

    View Code


     

    我们用cout.setf()设置输出的格式,用cout.unsetf()取消格式。可以看出10进制在输出的时候不管有没有设置基指示

    符ios:: showbase,都没用,8进制再输出的时候在前面加0,而16进制是在前面加0X。而对于数值中字母大写输出,只对16进制

    有用,以后我们就应该看情 况使用了。当然,我们前面已经说了,还有一种方法也可以实现格式化输出,那就是使用操纵算子,如下,

    复制代码
     1 /*一个按进制输出的例子*/
     2 #include<iomanip.h>
     3 void main()
     4 {
     5 int x=30, y=300, z=1024;
     6 cout<<x<<' '<<y<<' '<<z<<endl; //按十进制输出
     7 cout<<oct<<x<<' '<<y<<' '<<z<<endl; //按八进制输出
     8 cout<<setiosflags(ios::showbase); //设置基指示符
     9 cout<<x<<' '<<y<<' '<<z<<endl; //仍按八进制输出
    10 cout<<resetiosflags(ios::showbase); //取消基指示符
    11 cout<<hex<<x<<' '<<y<<' '<<z<<endl; //按十六进制输出
    12 cout<<setiosflags(ios::showbase | ios::uppercase);
    13 //设置基指示符和数值中的字母大写输出,
    14 cout<<x<<' '<<y<<' '<<z<<endl; //仍按十六进制输出
    15 cout<<resetiosflags(ios::showbase | ios::uppercase);
    16 //取消基指示符和数值中的字母大写输出
    17 cout<<x<<' '<<y<<' '<<z<<endl; //仍按十六进制输出
    18 cout<<dec<<x<<' '<<y<<' '<<z<<endl; //按十进制输出
    19 }
    复制代码

     

    我们用以上的程序也可以输出同样的结果,可见他的灵活。我们现在输出下列一段文字:

    第一章

    1.1 什么是C语言...........................1

    1.11 C语言的历史..........................58

    第二章

    方法很多种啦,我们可以这样写:

    复制代码
     1 /*一个使用填充,宽度,对齐方式的例子*/
     2 #include <iostream.h>
     3 void main()
     4 {
     5 cout<<"第一章"<<endl;
     6 cout<<" ";
     7 cout.setf(ios::left); //设置对齐方式为left
     8 cout.width(7); //设置宽度为7,不足用空格填充
     9 cout<<"1.1";
    10 cout<<"什么是C语言";
    11 cout.unsetf(ios::left); //取消对齐方式,用缺省right方式
    12 cout.fill('.'); //设置填充方式
    13 cout.width(30); //设置宽度,只对下条输出有用
    14 cout<<1<<endl;
    15 cout<<" ";
    16 cout.width(7); //设置宽度
    17 cout.setf(ios::left); //设置对齐方式为left
    18 cout.fill(' '); //设置填充,缺省为空格
    19 cout<<"1.11";
    20 cout<<"C语言的历史";
    21 cout.unsetf(ios::left); //取消对齐方式
    22 cout.fill('.');
    23 cout.width(30);
    24 cout<<58<<endl;
    25 cout.fill(' ');
    26 cout<<"第二章"<<endl;
    27 }
    复制代码

     

    我们多次设置了宽度,为的是使我们的间距能一致,也使用了对齐方式,为的是使我们的数据能对齐显示,看起来美观

    。我们还使用了填充方式。我们下面用操纵算子来实现也是可以的。

    复制代码
     1 /*一个使用填充,宽度,对齐方式的例子*/
     2 #include <iomanip.h>
     3 void main()
     4 {
     5 cout<<"第一章"<<endl;
     6 cout<<" ";
     7 cout<<setiosflags(ios::left)<<setw(7); //设置宽度为7,left对齐方式
     8 cout<<"1.1";
     9 cout<<"什么是C语言";
    10 cout<<resetiosflags(ios::left); //取消对齐方式
    11 cout<<setfill('.')<<setw(30)<<1<<endl; //宽度为30,填充为'.'输出
    12 cout<<setfill(' '); //恢复填充为空格
    13 cout<<" ";
    14 cout<<setw(7)<<setiosflags(ios::left); //设置宽度为7,left对齐方式
    15 cout<<"1.11";
    16 cout<<"C语言的历史";
    17 cout<<resetiosflags(ios::left); //取消对齐方式
    18 cout<<setfill('.')<<setw(30)<<58<<endl; //宽度为30,填充为'.'输出
    19 cout<<setfill(' ')<<"第二章"<<endl;
    20 }
    复制代码

     

     我们输出了同样的效果,不过依我的性格,我更喜欢用操纵算子来进行格式化输出。最后我们看看浮点数的格式输出,

    如下例:

    复制代码
     1 /*关于浮点数的格式*/
     2 #include <iostream.h>
     3 void main()
     4 {
     5 float f=2.0/3.0,f1=0.000000001,f2=-9.9;
     6 cout<<f<<' '<<f1<<' '<<f2<<endl; //正常输出
     7 cout.setf(ios::showpos); //强制在正数前加+号
     8 cout<<f<<' '<<f1<<' '<<f2<<endl;
     9 cout.unsetf(ios::showpos); //取消正数前加+号
    10 cout.setf(ios::showpoint); //强制显示小数点后的无效0
    11 cout<<f<<' '<<f1<<' '<<f2<<endl;
    12 cout.unsetf(ios::showpoint); //取消显示小数点后的无效0
    13 cout.setf(ios::scientific); //科学记数法
    14 cout<<f<<' '<<f1<<' '<<f2<<endl;
    15 cout.unsetf(ios::scientific); //取消科学记数法
    16 cout.setf(ios::fixed); //按点输出显示
    17 cout<<f<<' '<<f1<<' '<<f2<<endl;
    18 cout.unsetf(ios::fixed); //取消按点输出显示
    19 cout.precision(18); //精度为18,正常为6
    20 cout<<f<<' '<<f1<<' '<<f2<<endl;
    21 cout.precision(6); //精度恢复为6
    22 }
    复制代码

     

    同样,我们也一样能用操纵算子实现同样的功能:

    复制代码
     1 /*关于浮点数的格式*/
     2 #include <iomanip.h>
     3 void main()
     4 {
     5 float f=2.0/3.0,f1=0.000000001,f2=-9.9;
     6 cout<<f<<' '<<f1<<' '<<f2<<endl; //正常输出
     7 cout<<setiosflags(ios::showpos); //强制在正数前加+号
     8 cout<<f<<' '<<f1<<' '<<f2<<endl;
     9 cout<<resetiosflags(ios::showpos); //取消正数前加+号
    10 cout<<setiosflags(ios::showpoint); //强制显示小数点后的无效0
    11 cout<<f<<' '<<f1<<' '<<f2<<endl;
    12 cout<<resetiosflags(ios::showpoint); //取消显示小数点后的无效0
    13 cout<<setiosflags(ios::scientific); //科学记数法
    14 cout<<f<<' '<<f1<<' '<<f2<<endl;
    15 cout<<resetiosflags(ios::scientific); //取消科学记数法
    16 cout<<setiosflags(ios::fixed); //按点输出显示
    17 cout<<f<<' '<<f1<<' '<<f2<<endl;
    18 cout<<resetiosflags(ios::fixed); //取消按点输出显示
    19 cout<<setprecision(18); //精度为18,正常为6
    20 cout<<f<<' '<<f1<<' '<<f2<<endl;
    21 cout<<setprecision(6); //精度恢复为6
    22 }
    复制代码

     

    在c/c++系统中除了标准的输入输出外,还提供了更多的输入函数。

    这写函数主要有getch(),getche(), getchar (),cin.get(),putch(),putchar(),cout.put(),gets(),cin.getline(),puts()。

    另外 还有些为了让缓冲区不影响程序的正确操作的缓冲去的操作,如:cin.putback(),fflush(stdin),cout.flush().我们 做一下简单的说明。

    1、getch()和getche(),非缓冲式输入,从键盘读入一个字符。getch()读入字符不显示。有conio.h支持。

     2、cin.get(),getchar(),缓冲式输入,从键盘读入一个字符,并显示。getchar()由stdio.h支持,cin.get()由iostream.h支持。

    3、putch()和putchar(),非缓冲式输出,输出一个字符到显示器。putch()由conio.h支持,putchar()由stdio.h支持。

     4、cout.put(),缓冲式输出,输出一个字符到显示器。由iostream.h支持。

     5、gets()和cin.geline(),缓冲式输入,读入一字符串(包括空格,不包括最后的回车),gets()由stdio.h支持,cin.getline()由iostream.h支持。

     6、puts(),非缓冲输出,输出一个字符串,由stdio.h支持。

    7、cin.putback(),把一个字符送回输入缓冲区。

    8、fflush(stdin),清除输入缓冲区操作。无法清除cin.get()等带来的操作。

    9、cout.flush(),清楚输出缓冲区。 在这里我们稍微说一下输入/输出缓冲区,这是为了减少程序访问io带来中断而设的一段空间。当程序满足某个刷新条件时,那就将清理缓冲区。具体条件为:

    1、输入缓冲区 a,程序要求输入时,按下了回车键。 b,遇到程序结束。 c,遇到下一条输入语句。 d,遇到清除缓冲区操作 e,缓冲区溢出 2、输出缓冲区 a,输出缓冲区溢出 b,遇到下一条输入语句 c,使用刷新缓冲区迫使清除

    例2 用控制符控制输出格式

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

     

    运行结果如下:   

    inputa:34 (输入a的值)   

     dec:34 (十进制形式)   

    hex:22 (十六进制形)   

    oct:42 (八进制形式)   

    China (域宽为10)   

    ***** China (域宽为10,空白处以'*'填充)   

    pi=3.14285714e+00 (指数形式输出,8位小数)   

     pi=3.1429e+00) (指数形式输小,4位小数)   

     pi=3.143 (小数形式输出,梢度仍为4)

     

     

    有点乱,不过讲究了,太多了。以后测试的时候再整理整理。

    展开全文
  • C++格式输出

    千次阅读 2021-11-06 22:10:53
    格式化输入输出 格式化输入输出,也叫做标准输入输出,即从键盘输入,输出到屏幕上。 头文件是stdio.h,以下3种方法都可以导入: 1 #include <stdio.h> 1 #include ...

    格式化输入输出

    格式化输入输出,也叫做标准输入输出,即从键盘输入,输出到屏幕上。

    头文件是stdio.h,以下3种方法都可以导入:

    1

    #include <stdio.h>

    1

    #include <cstdio>

    1

    #include <bits/stdc++.h>

    输出函数

    printf,print就是打印,表示打印到屏幕上,f则是format、function的首字母,你可以理解成格式化输出、输出函数等。

    例一:输出Hello World:

    1

    2

    3

    4

    5

    6

    #include <bits/stdc++.h>

    using namespace std;

    int main(){

        printf("Hello World\n");

        return 0;

    }

    例二:输出变量的值

    格式化输出函数,你需要输出什么,直接写在双引号里面,如果里面包含变量,只需要用格式符替换。

    如输出“I'm 12 years old.”,

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    #include <bits/stdc++.h>

    using namespace std;

    int main(){

        int a;

        cin >> a;

        printf("I'm 12 years old.\n");

        printf("I'm a years old.\n");

        printf("I'm %d years old.\n", a);

        return 0;

    }

    例三:输出多个变量

    如输出“The ascii of A is 65.”,其中字符由用户输入。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    #include <bits/stdc++.h>

    using namespace std;

    int main(){

        int a;

        char b;

        cin >> b;

        a = b;

        printf("The ascii of %c is %d.\n", b, a);

        return 0;

    }

    输出技巧

    场宽,即占多少个字符的宽度,可以在格式符中设置;不设置则默认有多少位就输出多少位。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    #include <bits/stdc++.h>

    using namespace std;

    int main(){

        int a=123, b=45, c=6;

        double x=1.23456789;

        printf("a=%db=%dc=%d\n", a, b, c);

        printf("a=%d b=%d c=%d\n", a, b, c);

        printf("a=%-5db=%-5dc=%-5d\n", a, b, c);

        printf("a=%5d\nb=%5d\nc=%5d\n", a, b, c);

        printf("a=%05d\nb=%05d\nc=%05d\n", a, b, c);

        printf("x=%.2lf x=%5.2lf\n", x, x);

        return 0;

    }

    运行以上代码,你会发现“%5d”共占5位,不足5位前面补空格,即“右对齐”。

    思考:如果输出的值是7位,用“%5d”会怎样?“%-10d”呢?

    输入函数

    scanf,scan就是扫描,用于输入;f表示格式化、函数;其用法与printf累死,需要注意的是,输入时需要加入取地址符号“&”。

    例三:输出两个整数的差

    1

    2

    3

    4

    5

    6

    7

    8

    #include <bits/stdc++.h>

    using namespace std;

    int main(){

        int a, b;

        scanf("%d%d", &a, &b);

        printf("%d\n", a-b);

        return 0;

    }

    输入技巧

    注意:输入输出技巧有所不同,书上讲到的、自己验证过的才能使用。

    例四:输出生日

    输入8位数字表示小明的出生年月日,输出小米的生日,如输入20191207,输出12-07。

    1

    2

    3

    4

    5

    6

    7

    8

    #include <bits/stdc++.h>

    using namespace std;

    int main(){

        int a, b;

        scanf("%*4d%2d%2d", &a, &b);

        printf("%02d-%02d\n", a, b);

        return 0;

    }

    展开全文
  • C++中如何控制输出格式

    千次阅读 2022-04-24 19:38:07
    1.设置输出宽度 1.1 调用width成员函数来设置宽度 1.2通过setw(set width)操纵符来设置宽度,使用操纵符时要添加头文件#include<iomanip> 代码示例: #include<iostream> #include<iomanip> ...
  • C++格式输出

    千次阅读 2022-07-28 17:38:36
    控制符 作用 dec 设置数值的基数为10 hex 设置数值的基数为16 ...在以一般十进制小数形式输出时,n代表有效数位。在以fixed形式输出时,n为小数位数 setw(n) 设置字段宽度为n位
  • C++各种输出模式

    千次阅读 2022-04-04 17:28:02
    C++各种输出模式介绍C++语言中的流I/O类库各种输出方式cout语句printf函数输出格式控制解决输出中文乱码的问题后续 介绍 在用户和计算机进行交互的过程中,数据输入和数据输出是必不可少的操作过程,计算机需要通过...
  • C++ 格式输出日期&时间

    千次阅读 2021-06-19 00:20:29
    4、用格式字符串来将tm结构体转换为指定格式的日期时间字符串:strftime(char数组,数组容量,格式字符串,&tm结构体) #include <iostream> #include <ctime> int main(int argc,char* argv[]) { ...
  • C++输出格式对齐

    千次阅读 2018-04-08 16:38:36
  • C++控制输出格式C++控制输出格式C++控制输出格式C++控制输出格式C++控制输出格式
  • C++输出格式(%.....)的介绍

    千次阅读 2020-04-21 01:17:11
    C中输出格式的介绍 %d整形(十进制),%ld长整型; (%6d表示宽度为8,默认右对齐;%-6d表示宽度为8,左对齐;%06表示宽度为8,默认右对齐,空位用0补齐;其它的类似) %o八进制形式输出整数; %x十六进制形式输出...
  • C++ cout格式输出(超级详细)

    千次阅读 2022-02-14 15:22:11
    C++ cout格式输出(超级详细) 在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留 2 位小数,再比如以十六进制的形式输出整数,等等。 对于学过 C 语言的读者应该知道,当使用 printf...
  • C++ 基本的输入输出格式设置

    千次阅读 2019-07-04 19:23:35
    C++ 基本的输入输出 这个我想这一篇文章也就够了,总结的非常全面了,不用死记硬背,因为平常很少用到。 #include <iostream> #include <iomanip> using namespace std; int main() { cout<&...
  • C++中浮点数的格式输出

    千次阅读 2021-08-14 13:00:43
    C++中浮点数的输出方式有: 定点输出法:我们平常日常生活中书写小数的方法,小数点不能随便移动,如3.1415926、123456.789; //设置浮点数按定点方式输出 std::cout.setf(std::ios_base::fixed, std::ios_base::...
  • C++输出数据为.csv格式

    千次阅读 2021-12-06 14:28:39
    C++输出数据为.csv格式
  • C++输入输出格式控制

    千次阅读 2020-07-08 11:26:41
    输出格式控制:利用cout的输出控制符 例如:setprecision(n)tmep保留n位有效数字 int main() { double a = 123.4444555666; cout << setprecision(7); //保留7位有效数字 cout << a << endl; ...
  • C++】数字输出格式

    千次阅读 2022-04-26 14:20:59
    简单的对数字输出格式进行列举,大致了解就好。
  • 我们有时希望数据按照一定的格式进行输出,如按十六进制输出整数,输出浮点数时保留小数点后面两位,输出整数时按 6 个数字的宽度输出,宽度不足时左边补 0,等等。C语言中的 printf() 函数使用以%开头的格式控制符...
  • C++中的格式化字符串

    千次阅读 2021-06-18 14:44:22
    格式输出函数包括printf, fprintf, sprintf等等。 格式化输入函数包括scanf, fscanf, sscanf等等。 这类函数在输入输出的时候都有一个参数为格式化字符串(format_str), 里面介绍了输入输出字符串的格式,当需要...
  • 格式:gets(字符数组名); 功能:gets函数用于将输入的字符串内容存放到指定的字符数组中,输入结尾的换行符'\n'被换成'\0'存储在该数组中。 举例说明如下: 1 2 3 ...
  • 关于C++的输入输出格式%f和%lf的区别

    千次阅读 2018-08-23 08:10:43
    首先,说明下,C++C++C++将实数分为单精度和高精度这些花里胡哨的东西.. printfprintfprintf的%f说明符的确既可以输出floatfloatfloat型又可以输出doubledoubledouble型。 根据一种“默认参数提升”的睿智东西,...
  • c++格式输出

    千次阅读 2018-09-09 15:42:17
    c++中通过格式输出的库主要是iomanip 主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式输出一样.以下是一些常见的控制函数的: ...
  • C++编程 十六进制格式输出数据

    千次阅读 2022-01-12 13:11:13
    } 输出结果: 示例解读: 1. 需包含 #include #include 2. std::uppercase:可以将输入转为大写 std::hex:将输入按照16进制的方式展示出来 std::setfilll(‘0’) 当不足要求长度的时候填充’0’来满足长度要求 ...
  • C++浮点数控制输出格式的方法

    千次阅读 2020-03-19 17:07:07
    1、C++中的cout默认的输出格式为%g即简略模式,如double型变量a、b的10.000、12.25000输出分别为为10、12.25;若用cout<<fixed<<a<<b,则按C语言风格%f %lf隐含输出6位小数输出,即...
  • C++ 输出

    千次阅读 多人点赞 2020-04-20 14:32:28
    stream:C++程序把输入和输出看做字节流,流充当了程序和流源或流向目标之间的桥梁。 键盘输入每次提供一个字符,因此在这种情况下,程序无需缓冲区来帮助匹配不同的数据传输速率。然而,对键盘输入进行缓冲可以让...
  • C++输出对齐(如何使输出对齐)

    千次阅读 2021-07-07 00:26:27
    代码如下: #include <iostream> #include <iomanip> using namespace std; int main() { cout << setw(15)<<std::left<<"unsigned int" << setw(15) <... setw(15)
  • C++ 输出颜色字体

    千次阅读 2021-08-16 18:19:05
    C++ 输出颜色字体 #include <iostream> #include <string> using namespace std; int main(){ cout << "这是原始颜色" << endl; cout << "\033[31;1m这是红色\033[0m" << ...
  • C++格式输入输出

    2007-10-13 13:49:51
    介绍C++格式输入输出
  • C++中如何使输出对齐

    万次阅读 多人点赞 2018-08-24 21:02:46
    2.setiosflags(ios::fixed):固定输出格式,配合setprecision()函数使用,例如: cout输出结果为5.100000。 3.setiosflags()、setprecision()、setw()三个函数的定义包含在iomanip头文件中。 4.setw()函数一般放在要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,061,102
精华内容 424,440
关键字:

c++输出格式

友情链接: FFT法.rar