逐梦C++之二:输入与输出

C++输入与输出

1.C++输入与输出简介

C++提供了一套新的输入/输出库来替代C中的输入/输出库,新的库提供了一套更容易使用的、更灵活的、可扩展的系统(PS:具体表现在使用C++库进行输入输出时不需要进行额外的格式化);
输入:在C++中,程序的输入被看做是从键盘、磁盘文件或者其他输入源输入的一串连续的字节流;
输出:程序的输出被看做是输出到显示器、磁盘文件或者其他目标的一串连续的字节流;
当使用C++的库进行输出操作时,必须包含头文件iostream.
cin代表标准输入,cout代表标准输出,cerr代表标准出错;虽然cout和cerr的默认输出目的地都是屏幕,但是cout是带缓冲的,cerr是不带缓冲的;
关于输入操作符<<有一点需要注意的是:它同scanf一样,默认忽略前导空格,若要改变此动作需使用操纵符noskipws;
例子:

//==================================================
//程序描述:浅谈C++输入与输出之一
//Date:2016年1月10日   by  Ye_wolf
//备注:
//         本例用C++进行书写时,不需要考虑你输入/输出是何种数据类型
//==================================================

//========================【头文件部分】=============================
#include <iostream>
using namespace std;

//=========================【主函数】============================
int main()
{
    int id;
    float av;

    cout<<"请输入编号(id)和平均值(av):"<<endl;
    cin>>id>>av;
    cout<<"Id="<<id<<endl
            <<"Average="<<av<<endl;
    return 0;
}

2.操纵符

C++中,操纵符主要是用来格式化输入/输出;
首先,需要说明下操纵符包含的头文件,若无参数(如hex,endl)则需要包含在头文件iostream,若有参数(如setw(),setprecision(),setfill())则需要包含在头文件iomanip;
再则,除却setw()外,其他操纵符对后面所有的输入输出都产生影响;

//==================================================
//程序描述:浅谈C++输入与输出之二操纵符
//Date:2016年1月10日   by  Ye_wolf
//备注:
//==================================================

//========================【头文件部分】=============================
#include <iostream>
#include <iomanip>
using namespace std;

//=========================【主函数】============================
int main()
{
    int i=4,j=5,k=6,m=91;
    float fa=1.12,fb=10.123,fc=1000.1234,fd=1,fe=-0.556;
    char c='!',ch;

    //操纵符-----------endl:换行
    cout<<"操纵符-----------endl:换行"<<endl;
    cout<<i<<c<<endl
            <<j<<c<<'\n'
            <<k<<c<<endl;
    cout<<"=================="<<endl;

    //操纵符-----------oct、dec和hex:八、十、十六进制
    cout<<"操纵符-----------oct、dec和hex:八、十、十六进制"<<endl;
    cout<<"m="<<m<<"(十进制)\n";
    cout<<"m="<<oct<<m<<"(八进制)\n";
    cout<<"m="<<hex<<m<<"(十六进制)\n";
    cout<<"如果在后面的输出不将进制改回来,则后面的输出均采用16进制"<<endl;
    cout<<"没改成十进制:"<<endl
            <<"十进制数888:"<<888<<endl
            <<"改成十进制:"<<endl
            <<"十进制数888:"<<dec<<888<<endl;
    cout<<"=================="<<endl;

    //操纵符-----------setw():设置域宽
    cout<<"操纵符-----------setw:设置域宽"<<endl;
    for(i=1;i<=1000;i*=10)
        cout<<setw(6)<<i<<'\n';
    cout<<"=================="<<endl;

    //操纵符-----------setfill():设置填充字符(当域宽大于输出项宽度时)
    cout<<"操纵符-----------setfill():设置填充字符"<<endl;
    cout<<setfill('*');
    for(i=1;i<=1000;i*=10)
        cout<<setw(6)<<i<<'\n';
    cout<<"=================="<<endl;

    //操纵符-----------setprecision():设置浮点数精度,默认值为6
    cout<<"操纵符-----------setprecision():设置浮点数精度"<<endl;
    cout<<"未设置精度前,各变量的值:"<<endl;
    cout<<"fa="<<fa<<'\n'
            <<"fb="<<fb<<'\n'
            <<"fc="<<fc<<'\n';
    cout<<"设置精度后,各变量的值:"<<endl;
    cout<<setprecision(2);
    cout<<"fa="<<fa<<'\n'
            <<"fb="<<fb<<'\n'
            <<"fc="<<fc<<'\n';
    cout<<setprecision(6);
    cout<<"=================="<<endl;

    //操纵符-----------left、right:左对齐、右对齐(默认右对齐)
    cout<<"操纵符-----------left、right:左对齐、右对齐(默认右对齐)"<<endl;
    cout<<"左对齐:"<<endl;
    for(i=1;i<=1000;i*=10)
        cout<<left<<setfill('*')<<setw(6)<<i<<'\n';
    cout<<"右对齐:"<<endl;
    for(i=1;i<=1000;i*=10)
        cout<<right<<setfill('*')<<setw(6)<<i<<'\n';
    cout<<"=================="<<endl;

    //操纵符-----------showpoint和noshowpoint、showpos和noshowpos:
    //                            强制显示小数点以及全部尾随零、不显示尾随零,若可能去掉小数点
    //                            非负数在其前面显示+号、非负数在其前面不显示+号
    cout<<"操纵符-----------showpoint和noshowpoint、showpos和noshowpos:"
        <<"强制显示小数点以及全部尾随零、不显示尾随零,若可能去掉小数点"
        <<"非负数在其前面显示+号、非负数在其前面不显示+号"<<endl;
    cout<<showpoint<<showpos;
    cout<<"fa="<<fa<<endl;
    cout<<"fd="<<fd<<endl;
    cout<<"fe="<<fe<<endl;
    cout<<noshowpoint<<noshowpos;
    cout<<"=================="<<endl;

    //操纵符-----------fixed:用定点符号表示浮点数d.ddd、scientific:用科学计数法表示浮点数
    cout<<"操纵符-----------fixed:用定点符号表示浮点数d.ddd"<<endl;
    cout<<fixed;
    cout<<"fa="<<fa<<endl;
    cout<<"fc="<<fc<<endl;
    cout<<"操纵符-----------scientific:用科学计数法表示浮点数"<<endl;
    cout<<scientific;
    cout<<"fa="<<fa<<endl;
    cout<<"fc="<<fc<<endl;
    cout<<"=================="<<endl;

    //操纵符-----------skipws、noskipws:忽略前导空白,不忽略前导空白
    cout<<"操纵符-----------skipws、noskipws:忽略前导空白,不忽略前导空白"<<endl;
    cin>>noskipws;
    while(cin>>ch)
        cout<<ch;
    cout<<skipws;
    cout<<"=================="<<endl;

    return 0;
}

这里写图片描述

3.混合使用C\C++输入/输出

在程序中同时使用C的输入/输出库函数和C++的类库会出现问题,因为这两个库中的读写操作不会自动同步。如果确实需要同时使用这两个库,应在任何输入输出函数前调用如下函数:
Ios::sync_with_stdio();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值