C++中流的概念要咋去理解和应用呢( 二 )


比如你可以写这样的一个函数:(在继承自标准流)
void 写入一个数据(学生 数据){ //TODO: 将学生的信息写入output}这样你就可以把一个你自己定义的学生类输入给cout啦,
同样,刚才提到的数据发送器也可以有很多形式,有发往屏幕的cout,也有发往日志的error_out还有发往文件的 fcout,还可以写发往网络的 socket_out。这些只要继承 数据发送器 就可以写。
你写了一个类,写一下他的转入流函数,就可以适配所有的流发送器;相对的你写一个流发送器,就能使用原有的所有转换函数 (其实是所有同类型的流发送器,流发送器是你把你的类型转换成流的格式发送的,流的格式有byte,字符串,u16字符串,等等,还可以做自己定义的)
流的缺点也很显著:
首先,跟printf相比,我不能定义输出格式,比如 输出 %2.4f 就是 24.8383, printf可以定义小数和整数的省略格式,流则不能。
其次,流的std库函数写的不忍直视!不忍直视!不忍直视!不忍直视!不忍直视!不忍直视!_(:з」∠)_ 从里面继承可能有点难,不过这并不影响我们从造轮子还是写。
最后说一下 流里面见到的这个写法 cout\u0026lt;\u0026lt;"这是啥?”其实这里用到了运算符重写 ,这个运算符反而是这里面最简单的东西,可以看看chenshuo的github
//上面说的函数:void 写入一个数据(char* 数据);实际是这样的: self\u0026amp; operator\u0026lt;\u0026lt;(char v) { buffer_.append(\u0026amp;v, 1);return *this; }cout\u0026lt;\u0026lt;\u0026#39;d\u0026#39;;//这里相当于调用了上面这个函数,这就是运算符重写,就这个特性,记住就行。//这个的返回值是cout本身。if((cout\u0026lt;\u0026lt;\u0026#39;d\u0026#39;) == cout)//true//因此流可以连写。cout\u0026lt;\u0026lt;\u0026#39;d\u0026#39;\u0026lt;\u0026lt;123\u0026lt;\u0026lt;"hello";https://github.com/chenshuo/muduo/blob/master/muduo/base/LogStream.h 【C++中流的概念要咋去理解和应用呢】

■网友
iostream真心很少用


推荐阅读