分享

c 输入输出控制

 fisher60 2013-02-04

c++输入输出控制  

 

1.cin>>i>>j;是用空格或TAB来分隔输入的. 如果是cin>>i;cin>>j;必须先输入i,再回车,最后输入j .

2.cout<<:   设 int x=30, y=300, z=1024;

           1)    cout<<x<<' '<<y<<' '<<z<<endl;  //按十进制输出            
           2) 数字进制:使用hex、dec、oct分别控制输出数字的十六,十,八进制
                  cout<<hex<<x<<' '<<y<<' '<<z<<endl;//x,y,z都按十六进制输出
           3) 如何对齐:使用setw控制宽度
                  cout<<x<<setw(30)<<y<<endl;

                  //X正常输出,而Y左边会空出28个空格
                  默认对齐方式为右对齐,即填充字符从左开始,最后是输出字符.
                 如果setiosflags(ios::left),则填充字符在右,输出字符在前.
          4) 填充字符:使用setfill控制填充字符
                  cout<<x<<setfill('.')<<setiosflags(ios::left)<<setw(30)<<y<<endl;//28个空格用"."填充.
                填充时,如果实际长度比设置长度短,则按实际长度输出.
          5) 设置精度:使用setprecision控制输出精度
          6)如何取消对齐:
              cout<<resetiosflags(ios::left);//取消左对齐.因为对齐是针对所有输出都有效果,而不专对最近的一个输出.
          7)如何取消填充:
                setfill()如何取消呢?
                cout<<setfill(' '); 就可以了.
                注意: ' '之间是一个空格符. 因为setfill()也是对所有输出有效,只要你设置了setw().
         8) 浮点控制格式:
             cout.setf(ios:: );//这也是针对所有输出有效的.
             常用的有;
           ios::fixed固定的浮点显示
           ios::scientific指数表示,科学记数法 
           ios::left / ios::right 左/右对齐
           ios::skipws忽略前导空白
           ios::uppercase / ios::lowercase 十六进制大/小写输出
           ios::showpos强制在正数前加+号
           ios::showpoint 强制显示小数点后的无效0  
          precision(18);   //精度为18        
           例如:
     float f=2.0/3.0,f1=0.000000001,f2=-9.9;
    cout<<f<<' '<<f1<<' '<<f2<<endl;      //正常输出
    cout.setf(ios::showpos);              //强制在正数前加+号
    cout<<f<<' '<<f1<<' '<<f2<<endl;
    cout.unsetf(ios::showpos);            //取消正数前加+号
    cout.setf(ios::showpoint);            //强制显示小数点后的无效0
    cout<<f<<' '<<f1<<' '<<f2<<endl;
    cout.unsetf(ios::showpoint);          //取消显示小数点后的无效0
    cout.setf(ios::scientific);           //科学记数法
    cout<<f<<' '<<f1<<' '<<f2<<endl; 
    cout.unsetf(ios::scientific);         //取消科学记数法
    cout.setf(ios::fixed);                //按点输出显示
    cout<<f<<' '<<f1<<' '<<f2<<endl;
    cout.unsetf(ios::fixed);              //取消按点输出显示
    cout.precision(18);                   //精度为18,正常为6
    cout<<f<<' '<<f1<<' '<<f2<<endl;
    cout.precision(6);                    //精度恢复为6

操纵算子实现同样的功能:如下:

float f=2.0/3.0,f1=0.000000001,f2=-9.9;

    cout<<f<<' '<<f1<<' '<<f2<<endl;      //正常输出

    cout<<setiosflags(ios::showpos);      //强制在正数前加+号

    cout<<f<<' '<<f1<<' '<<f2<<endl;

    cout<<resetiosflags(ios::showpos);    //取消正数前加+号

    cout<<setiosflags(ios::showpoint);    //强制显示小数点后的无效0

    cout<<f<<' '<<f1<<' '<<f2<<endl;

    cout<<resetiosflags(ios::showpoint);  //取消显示小数点后的无效0

    cout<<setiosflags(ios::scientific);   //科学记数法

    cout<<f<<' '<<f1<<' '<<f2<<endl;  

    cout<<resetiosflags(ios::scientific); //取消科学记数法

    cout<<setiosflags(ios::fixed);        //按点输出显示

    cout<<f<<' '<<f1<<' '<<f2<<endl;

    cout<<resetiosflags(ios::fixed);       //取消按点输出显示

    cout<<setprecision(18);               //精度为18,正常为6

    cout<<f<<' '<<f1<<' '<<f2<<endl;

    cout<<setprecision(6);                //精度恢复为6

9) 其它的输出方法:

还有些为了让缓冲区不影响程序的正确操作的缓冲去的操作,如: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(),清楚输出缓冲区。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多