C++之 ostream详细用法

概述

在 C++中,ostream表示输出流,英文”output stream“的简称。在 C++中常见的输出流对象就是标准输出流cout,很少自定义ostream的对象,更多的是直接使用cout。那么 ostream 有什么用呢,来看一个场景:

class CPoint
{
public:
    CPoint(int x_,int y_):x(x_),y(y_){}
    int x,y;
};

这里定义了一个简单的类CPoint,如果我们实例化该类过后,想要打印对象的值:

CPoint point(1,2);
cout << point;

很明显,这样写是会报错,因为"<<"只能输出整型、实型等普通类型。错误如下:

而ostream的出现正好可以解决这个问题。

正文

C++中的ostream这个类型,通常作为某个类的友元函数出现,用于<<操作重载中。接下来咱看看如何通过修改以上示例让输出正常流正常进行。

class CPoint
{
public:
    CPoint(int x_,int y_):x(x_),y(y_){}

    friend ostream & operator <<(ostream & os,const CPoint & p){
        return os << "x = "<<p.x  << " y = "<< p.y << endl;
    }

    int x,y;
};

在 CPoint 中,我们重载了<<操作符,让其能够正常输出。
OK,这样就可以直接输出cout << point;
该方法还可以扩展到其他很多地方,对自定义的类型进行输出时特别管用,写法都是一样的,只要重载<<操作符,配合ostream一起使用即可。

  • 100
    点赞
  • 336
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
ostreamC++标准库定义的一个输出类,用于向设备输出数据。它是一个基类,派生自ostream类的派生类具有输出数据的功能。 使用ostream类可以实现对数据的格式化输出,包括整型、浮点型、字符、字符串等不同类型的数据。可以使用<<运算符来向ostream对象输出数据,具体如下: ``` int num = 10; float f = 3.14; char ch = 'A'; string str = "Hello world"; cout << "num: " << num << endl; // 输出整型变量num的值,并换行 cout << "f: " << f << endl; // 输出浮点型变量f的值,并换行 cout << "ch: " << ch << endl; // 输出字符变量ch的值,并换行 cout << "str: " << str << endl; // 输出字符串变量str的值,并换行 ``` 上面的代码,使用了"<<"运算符来向ostream对象cout输出不同类型的数据。将数据和字符串文字一起输出,使用了串联的方式,方便读者理解输出的含义。输出完成后,使用endl操作符换行。 除了基本类型的数据,ostream对象还可以输出自定义的类型,如果需要输出自定义类型的对象,需要重载对应类型的"<<"运算符,定义其输出的行为。 ostream提供了很多其他的成员函数,用于实现更加灵活的输出操作。比如可以使用setprecision函数设置浮点数的输出精度,使用setfill函数设置填充字符等。此外,还可以使用ostream的成员函数flush强制输出,使用put函数直接向输出插入字符等。 总之,ostream类提供了一系列用于输出数据的函数和操作符,方便进行数据的格式化输出。通过灵活应用这些功能,我们可以方便地实现数据的输出
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luoyayun361

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值