实现简单的 std::cout

                                                               实现简单的 std::cout

        其实在我做的程序里很少用到这些IO操作的东西,但是最近在培训班里要弄比赛,所以也就趁这个机会去学习一下C++里的IO操作。看了点书,有了点心得,遂决定自己来做这件有点本质的东西。

        cout 是类 ostream 的一个实例。而cin 是类 istream的一个实例。(cin 原理同cout 一致,所以此文不必论述)

        类似于 cout << .. 的操作其实是一个已知的数据(或对象)通过 “<<” 这个被重载了的运算符和 cout 对象发生作用。

       新的C++标准里,cout 被放在了一个名字空间里,而这个名字空间被放在 iostream 这个文件里,它叫 std !

       于是,如果你要使用 std 这个对象,那你就必须从名字空间 std 里去获得它。从一个名字空间里去获得一个对象的使用可以这样做:

       1: using namespace std;              然后就可以使用名字空间 std 里的所有东西。

       2: using std::cout;               然后就可以使用 std 里的 cout

       3:在要使用 cout 的时候直接 std::cout ….

      

       我们要实现的这个简单的 std::cout 应该能有这样的操作 cout << “My std::cout” ; 仅仅是让它输出一个字符串。在理解了以上的那些信息后,我们可以轻易地实现。

       实现步骤:首先,为了实现输出操作,我们必须使用一个比较底层的东西,例如C语言里的 printf . 然后我们还需要定义一个名为  std 的名字空间,在这个名字空间里得有个简单的类 ostream ,当然,为了实现看上的 cout << “….”  ,我们还需要重载  “<<” 运算符。最后,当然就是在 std 名字空间里实例化一个 ostream 的名为 cout 的对象。

       其实在理解了 cout 的本质后,这些实现一点也不难。

       见下面代码:

       //MyCout.h

//================================================================

//            实现一个简单的std::cout

//            Kevin Lynx  2006.3.28

//================================================================

#ifndef MYCOUT_H

#define MYCOUT_H

 

#include <stdio.h>               //我们需要使用C语言里的IO操作函数来实现底层的IO操作

 

namespace  std                     //定义一个名为 std 的名字空间

{

 

       class ostream                 //一个简单的ostream

       {

             

       public:

              void operator << (char *msg)                                //自己重载 << 运算符

              {

                     printf("%s",msg);                                                //调用printf函数实现IO输出

              }

      

       };

 

       ostream  cout;                            //实例化一个名为 cout 的对象

 

}

 

#endif

 

//test.cpp

//===============================================================

//            测试一下这个简易的std::cout

//            Kevin Lynx              2006.3.28

//===============================================================

#include "MyCout.h"

 

//using  std::cout;                                    //第一种方法

//using  namespace std;                                   //第二种方法

 

int main()

{

      

       //cout << "My std::cout" ;                     //配合第一,二种方法使用

       std::cout << "My std::cout" ;              //第三种方法

 

       return 0;

}    

 

              OK,到这里我们的目的就达到了!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值