浅谈cin与cout

来源:互联网 发布:北大出版社《最优化》 编辑:程序博客网 时间:2024/05/22 17:41

今天开始看了c++ ,第一章看到说cin.get()可以这样用,我猜测:那这样不就是说明cin是一个对象吗,然后调用他的iostream的类中的get函数

于是我试图找到iostream.h这个头文件,找啊找,找啊找,没找到我想要的cin这个声明对象。

于是看到#inlcude <istream.h> 

终于在这个头文件中找到了

class _CRTIMP istream : virtual public ios {public:    istream(streambuf*);    virtual ~istream();    int  ipfx(int =0);    void isfx() { unlockbuf(); unlock(); }    inline istream& operator>>(istream& (__cdecl * _f)(istream&));    inline istream& operator>>(ios& (__cdecl * _f)(ios&));    istream& operator>>(char *);    inline istream& operator>>(unsigned char *);    inline istream& operator>>(signed char *);    istream& operator>>(char &);    inline istream& operator>>(unsigned char &);    inline istream& operator>>(signed char &);    istream& operator>>(short &);    istream& operator>>(unsigned short &);    istream& operator>>(int &);    istream& operator>>(unsigned int &);    istream& operator>>(long &);    istream& operator>>(unsigned long &);    istream& operator>>(float &);    istream& operator>>(double &);    istream& operator>>(long double &);    istream& operator>>(streambuf*);    int get();    inline istream& get(         char *,int,char ='\n');    inline istream& get(unsigned char *,int,char ='\n');    inline istream& get(  signed char *,int,char ='\n');    istream& get(char &);    inline istream& get(unsigned char &);    inline istream& get(  signed char &);    istream& get(streambuf&,char ='\n');    inline istream& getline(         char *,int,char ='\n');    inline istream& getline(unsigned char *,int,char ='\n');    inline istream& getline(  signed char *,int,char ='\n');    inline istream& ignore(int =1,int =EOF);    istream& read(char *,int);    inline istream& read(unsigned char *,int);    inline istream& read(signed char *,int);    int gcount() const { return x_gcount; }    int peek();    istream& putback(char);    int sync();    istream& seekg(streampos);    istream& seekg(streamoff,ios::seek_dir);    streampos tellg();    void eatwhite();


再往下看,找到了cin对象的声明

extern _CRTIMP istream_withassign cin;


这个是public中的代码,也就是说

在我们调用iostream的时候,iostream中会包含istream和ostream

又因为操作运算符》重载 以及 get()等函数也在public中,并且cin对象为extern 

所以我们才可以直接输入或者输出 ,或者调用一些函数,比如 cin.get()


istream& operator>>(char *);    inline istream& operator>>(unsigned char *);    inline istream& operator>>(signed char *);    istream& operator>>(char &);    inline istream& operator>>(unsigned char &);    inline istream& operator>>(signed char &);    istream& operator>>(short &);    istream& operator>>(unsigned short &);    istream& operator>>(int &);    istream& operator>>(unsigned int &);    istream& operator>>(long &);    istream& operator>>(unsigned long &);    istream& operator>>(float &);    istream& operator>>(double &);    istream& operator>>(long double &);    istream& operator>>(streambuf*);

从这里大家也看到了,为什么说cin和cout可以不管后者的变量的类型,可以直接输入或输出,而不用像scanf和printf那样繁琐

他把每种类型都包含进去了。至于什么是istream&  这些东西我不懂,我只是这样猜测的。

^_^望大神给予指导

1 0
原创粉丝点击