自学内容网 自学内容网

C++输入输出流

输入/输出流类:iostream---------i  input(输入)    o output(输出)   stream:流
iostream:
        istream类:输入流类-------------cin:输入流类的对象
        ostream类:输出流类------------cout:输出流类的对象

1 输入流

    数据是从键盘或显示器流向输入缓冲区中,最后刷新了再流向内存
输入流:istream
    istream实例化了cin对象
    重载了运算符:>>
    输入格式:
        cin>>变量1;
        cin>>变量1>>变量2>>变量3.........;
    原型:
        istream &cin >>基本的数据类型;
        istream &cin >>int;
        istream &cin >>char;
        .......
    注:
        如果需要一次性输入多个数据,那么多个数据需要用空格进行间隔
        另外需要输入回车,把输入的内容刷新到内存中

2 输出流

    数据是从内存流向输出缓冲区,刷新时再从输出缓冲区流向终端或显示器
    缓冲区的大小:
        #define  BUFSIZ   512个字节


2.1 格式

输出流:ostream
    ostream实例化了cout对象、cerr对象(发生一些错误就会调用cerr输出错误信息)、clog对象(输出一些日志信息)        
    重载了运算符:<<
    输出格式:
        cout<<数据1;
        cout<<数据1<<数据2<<数据3,........;
    原型:
    ostream类中:
        ostream &  operator  <<(int)
        {
            ostream cout;
            .....
            return  cout;
        }
        ostream &  operator  <<(char)
        {
        }
    ostream  &cout  <<  基本的数据类型;
    ostream  &cout  <<  int ;
    ostream  &cout  << char;
    ostream  &cout  << unsigned int;
    ostream  &cout  << char *;
    ostream  &cout  << const char *;
    ostream  &cout  << float;
    .........

注:
    1)当输出遇到endl时,会刷新输出缓冲区
    2)当流对象使用完或超出作用域时,也会刷新输出缓冲区
    3)当输出缓冲区装满时,也会刷新一次缓冲区

2.2 采用格式化输出

C语言的格式化输出也支持:\n、\r、.......
十进制形式输出:<iomanip>
    dec:十进制
    oct:八进制
    hex:十六进制
    ....

示例:

#include <iostream>  
#include<string>  
#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  
   string pt= "China";         //pt指向字符串”China”  
   cout<<setw(10)<<pt<<endl; //指定域宽为10,输出字符串  
   cout<<setfill('*')<<setw(10)<<pt<<endl;//指定域宽10,输出字符串,空白处以“*”填充  
   double pi=22.0/7.0; //计算pi值  
   cout<<setiosflags(ios::scientific)<<setprecision(8);//按指数形式输出,8位小数  
   cout<<"pi="<<pi<<endl; //输出pi值  
   cout<<"pi="<<setprecision(4)<<pi<<endl;//改为4位小数  
   cout<<"pi="<<setiosflags(ios::fixed)<<pi<<endl;//改为小数形式输出,精度为4   
   cout<<"pi="<<fixed<<pi<<endl;//fixed确定小数点后精度为4   



cout.setf(ios::showbase); //设置输出时的基数符号  
   cout<<"dec:"<<a<<endl; //默认以十进制形式输出a  
   cout.unsetf(ios::dec); //终止十进制的格式设置  
   cout.setf(ios::hex); //设置以十六进制输出的状态  
   cout<<"hex:"<<a<<endl; //以十六进制形式输出a  
   cout.unsetf(ios::hex); //终止十六进制的格式设置  
   cout.setf(ios::oct); //设置以八进制输出的状态  
   cout<<"oct:"<<a<<endl; //以八进制形式输出a  
   cout.unsetf(ios::oct); //终止以八进制的输出格式设置  
   char *pt="China"; //pt指向字符串”china”  
   cout.width(10); //指定域宽为10  
   cout<<pt<<endl; //输出字符串  
   cout.width(10); //指定域宽为10  
   cout.fill('*'); //指定空白处以'*'填充  
   cout<<pt<<endl; //输出字符串  
   double pi=22.0/7.0; //计算pi值  
   cout.setf(ios::scientific);//指定用科学记数法输出  
   cout<<"pi="; //输出"pi="  
   cout.width(14); //指定域宽为14  
   cout<<pi<<endl; //输出"pi值  
   cout.unsetf(ios::scientific); //终止科学记数法状态  
   cout.setf(ios::fixed); //指定用定点形式输出  
   cout.width(12); //指定域宽为12  
   cout.setf(ios::showpos); //在输出正数时显示“+”号  
   cout.setf(ios::internal); //数符出现在左侧  
   cout.precision(6); //保留6位小数  
   cout<<pi<<endl; //输出pi,注意数符“+”的位置  
   return 0;   
}  

输出结果如下:


原文地址:https://blog.csdn.net/qq_62741190/article/details/135766231

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!