标准库中iostream的全面介绍

本文介绍了C++标准库中的iostream,对比了它与C语言stdio库的不同,并通过实例展示了iostream如何实现输入输出操作,包括iostream、istream、ostream、fstream及其相关类的使用,以及错误处理和输入输出状态的管理。
摘要由CSDN通过智能技术生成
C++的输入输出是由iostream库提供的,它与C语言的 stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作为一个c++的标准库组件提供给程序员使用。

iostream为内置类型类型对象提供了输入输出支持,同时也支持文件的输入输出,类的设计者可以通过对iostream库的扩展,来支持自定义类型的输入输出操作。

举一个示例:
#include <stdio.h>
#include <iostream>
using namespace std;    

class Test
{
        public:
        Test(int a=0,int b=0)
        {
                Test::a=a;
                Test::b=b;
        }
        int a;
        int b;
};
int main()
{
        Test t(100,50);
        printf("%???",t);//不明确的输出格式
        scanf("%???",t);//不明确的输入格式
        cout<<t<<endl;//同样不够明确
        cin>>t;//同样不够明确
        system("pause");
}

由于自定义类的特殊性,上面的代码中,无论使用c风格的输入输出,或者是c++的输入输出都不是不明确的一个表示,由于c语言没有运算符重载机制,导致stdio库的不可扩充性,我们无法让printf()和scanf()支持对自定义类对象的扩充识别,而c++是可以通过运算符重载机制扩充 iostream库的,使系统能能够识别自定义类型,从而让输入输出明确的知道他们该干什么,格式是什么。

  从上例中我们可以看出,C与C++处理输入输出的根本不同,从c的输入输出可以很明显看出是函数调用方式,而c++的则是对象模式,cout和cin是ostream类和istream类的对象。

iostream: istream 和 ostream
  C++中的iostream库主要包含下图所示的几个头文件:
IOSstream 库
fstream
iomainip
ios
iosfwd
iostream
istream
ostream
sstream
streambuf
strstream
  我们所熟悉的输入输出操作分别是由istream(输入流)和ostream(输出流)这两个类提供的,为了允许双向的输入/输出,由istream和ostream派生出了iostream类。

iostream库定义了以下三个标准流对象:
cin,表示标准输入(standard input)的istream类对象。cin使我们可以从设备读如数据。
cout,表示标准输出(standard output)的ostream类对象。cout使我们可以向设备输出或者写数据。
cerr,表示标准错误(standard error)的osttream类对象。cerr是导出程序错误消息的地方,它只能允许向屏幕设备写数据。

输出主要由重载的左移操作符(<<)来完成,输入主要由重载的右移操作符(>>)完成:
>>a  表示将数据放入a对象中。
<<a  表示将a对象中存储的数据拿出。
  这些标准的流对象都有默认的所对应的设备,见下表:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值