流插入和流提取运算符的重载

cout是在iostream中定义的,是ostream类的对象。cin是istream类的对象。测试代码如下:

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

class Complex
{
private :
    int real, img;
public:
    friend ostream & operator <<(ostream & o, const Complex &c);
    friend istream & operator >> (istream & is,Complex &c);
};

ostream &operator <<(ostream &o, const Complex &c)
{
    o << c.real << ‘+‘ << c.img << ‘i‘;
    return (o);
}
istream &operator >> (istream & is, Complex &c)
{
    string s;
    is >> s;
    int p = s.find(‘+‘, 0);
    string sTmp = s.substr(0, p);
    c.real = atof(sTmp.c_str());
    sTmp = s.substr(p + 1, s.length() - p - 2);
    c.img = atof(sTmp.c_str());
    return is;
}
int main()
{
    Complex c;
    int n = 0;
    cin >> c >> n;
    cout << c <<","<< n;
    return 0;
}
时间: 2024-07-30 13:35:18

流插入和流提取运算符的重载的相关文章

C++的流插入运算符“&lt;&lt;”和流提取运算符“&gt;&gt;”的重载

C++的流插入运算符"<<"和流提取运算符">>"是C++在类库中提供的,所有C++编译系统都在类库中提供输入流类istream和输出流类ostream.cin和cout分别是istream类和ostream类的对象.在类库提供的头文件中已经对"<<"和">>"进行了重载,使之作为流插入运算符和流提取运算符,能用来输出和输入C++标准类型的数据.因此,凡是用"cout&

C++ 流插入&quot;&lt;&lt;&quot;和流提取&quot;&gt;&gt;&quot;运算符的重载

01 流插入<<运算符的重载 C++ 在输出内容时,最常用的方式: std::cout << 1 <<"hello"; 问题: 那这条语句为什么能成立呢? cout 是什么?"<<" 运算符能用在 cout 上呢? 原因: 实际上,cout 是在 iostream 头文件中定义的 ostream 类的对象. "<<" 能够用在 cout 上是因为,在 ostream 类对 "&

C++重载流插入运算符和流提取运算符

C++的流插入运算符“<<”和流提取运算符“>>”是C++在类库中提供的,所有C++编译系统都在类库中提供输入流类istream和输出流类ostream.cin和cout分别是istream类和ostream类的对象.在类库提供的头文件中已经对“<<”和“>>”进行了重载,使之作为流插入运算符和流提取运算符,能用来输出和输入C++标准类型的数据.因此,凡是用“cout<<”和“cin>>”对标准类型数据进行输入输出的,都要用#incl

流插入运算符为什么要被重载为全局函数?

https://www.coursera.org/learn/cpp-chengxu-sheji/lecture/c3tbl/liu-cha-ru-yun-suan-fu-he-liu-ti-qu-yun-suan-fu-de-zhong-zai  笔记 Part 1. 流插入运算符的重载: cout<<5<<endl; cout是在iosream中定义的一个ostream对象 iostream中对“<<”进行了重载.  cout<<5; 即 cout.op

流运算符的重载

1.cout 是在iostream 中定义的,是ostream的对象 ostream& ostream::operator<<(int n) { // return *this; } ostream& ostream::operator<<(const char* s) { // return *this; } 2.类似Java中重写String方法一样,C++中一般重载“<<”运算符,一般为重载为全局函数 Because: 对输出运算符的重载 void

对下标运算符[]和函数调用运算符()的重载

一.对下标运算符[]的重载: 重载的格式:返回类型 类名 operator [](参数): #include<iostream> using namespace std; class A { public: A(int n); ~A(); int & operator [](int n);//返回类型为int & 引用类型 private: int *p; int size; }; int & A::operator[](int n){ return p[n];//返回

C++ 运算符的重载(转载自http://blog.csdn.net/insistgogo/article/details/6626952)

(转载自http://blog.csdn.net/insistgogo/article/details/6626952) 什么是运算符的重载? 运算符与类结合,产生新的含义. 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义) 怎么实现运算符的重载? 方式:类的成员函数 或 友元函数(类外的普通函数) 规则:不能重载的运算符有 .  和 .* 和 ?: 和 ::  和 sizeof 友元函数和成员函数的使用场合:一般情况下,建议一元运算符使用成员函数,二元运算符使

java 21 - 12 IO流的打印流

打印流 字节流打印流 PrintStream 字符打印流 PrintWriter 打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提取数据) B:可以操作任意类型的数据. C:如果启动了自动刷新,能够自动刷新. D:该流是可以直接操作文本文件的. 哪些流对象是可以直接操作文本文件的呢?  FileInputStream  FileOutputStream  FileReader  FileWriter  PrintStream

黑马程序员——Java基础--IO流(一)---字符流和字节流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.IO流的介绍及体系 IO流用来处理设备之间的数据传输.java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中. 输入流和输出流相对于内存设备而言:将外设中的数据读取到内存中:输入.将内存中的数据写出到外设中:输出. 流按照操作数据分为两种:字节流和字符流. 字符流的由来:其实就是字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字,再对这个文字进行操作