c++如何自定义ostream对象,使其实现cout的功能

c++如何自定义ostream对象,使其实现cout的功能?最好有代码
举报描述不清违规检举侵权投诉| 2016-05-20 17:16 137****4291 | 浏览 55 次 悬赏:20 来自:手机知道

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  • 自定义
  • ostream
  • c++
  • 对象
  • cout
我有更好的答案
举报描述不清违规检举侵权投诉|2016-05-20 17:27 网友采纳
ostream没有默认构造函数,即没有无参数的构造函数,所有不能ostream os;然后直接使用的。
但可以ostream (streambuf* sb)根据你要输出的类型,定义带参数的构造函数,得到ostream对象。
#include <iostream>  
#include <fstream>      

int main () {
  std::filebuf fb;
  fb.open ("test.txt",std::ios::out);
  std::ostream os(&fb);
  os << "Test sentence\n";
  fb.close();
  return 0;
}
这是http://www.cplusplus.com上的一个例子。
评论 | 给力0 不给力0

CreepM30 | 三级 采纳率66%

擅长: 数据库DB

为您推荐:

align="center,center" class="BAIDU_SS_HHIFRAME" src="http://entry.baidu.com/rp/home?di=u2115503&rsi0=450&rsi1=25&type=pageembed&version=1&titff=sans-serif%2Ctahoma%2C%22MicrosoftYaHei%22&titfs=14&rss2=%232d64b3&rss3=%232d64b3&title=c%2B%2B%E5%A6%82%E4%BD%95%E8%87%AA%E5%AE%9A%E4%B9%89ostream%E5%AF%B9%E8%B1%A1%EF%BC%8C%E4%BD%BF%E5%85%B6%E5%AE%9E%E7%8E%B0cout%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%9F%E6%9C%80%E5%A5%BD%E6%9C%89%E4%BB%A3%E7%A0%81_%E7%99%BE%E5%BA%A6%E7%9F%A5%E9%81%93&ltu=http%3A%2F%2Fzhidao.baidu.com%2Flink%3Furl%3DZf_tnVuIoUrqif_y0_qdL3jVuaVhzaLZ8_X3cX6M_TToa0qDFJjs-5iJxInp9N27wxUP_D4lrIp1Hrk9ajG4re11QbajuQk0VqnsAQfnnTa&ref=&pageWidth=1423&pageHeight=676&t=1467334903464&iframeWidth=1423&iframeHeight=676" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="width: 450px; height: 25px; background-color: transparent;" allowtransparency="true">
按默认排序 | 按时间排序

其他5条回答

举报描述不清违规检举侵权投诉|2016-05-20 17:36 热心网友 | 来自: 贴吧c++吧
重载移位运算符,对不同的表达式类型需要分别重载,并使其返回一个stream的引用。std::hex什么的需要定义stream的其他派生类,并使移位运算符的重载结果为该类的引用。
评论 | 给力0 不给力0
举报描述不清违规检举侵权投诉|2016-05-20 17:29 热心网友
cin ".."
cout ".."
追问:
这题禁用iostream和sstream
评论 | 给力0 不给力0
举报描述不清违规检举侵权投诉|2016-05-20 17:19 灰色52056 | 七级
意思是说你要自己定义ostream?而不用它自带的ostream
追问:
嗯,题目就是"make my ostream"

iostream和sstream已禁用,因此需要用cstdio里面的一些东西来实现效果
追答:
你要重新定义<iostream>,而且需要能用COUT,那么意味着namespace std也要重新定义,我觉得按照你的图片的题目,意思应该只是重新定义COUT吧
追问:
对对,我也不懂,所以刚才没有理解你的意思……
大神搭把手
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值