Em C++, há várias classes de fluxo para definir vários fluxos relacionados com arquivos e para fazer operações de entrada-saída. Todas essas classes são definidas no arquivo iostream.h . A figura abaixo mostra a hierarquia dessas classes.
 

  1. A classe ios é a classe mais alta na hierarquia de classes de fluxo. É a classe base para as classes istream, ostream e streambuf .
     
  2. istream e ostream servem as classes básicas para a classe iostream . A classe istream é usada para entrada e ostream para saída. 
     
  3. A classe ios é herdada indiretamente para a classe iostream usando istream e ostream . Para evitar a duplicidade de dados e funções de membro da classe ios , ela é declarada como classe base virtual ao herdar em istream e ostream como
     
class istream: virtual public ios
{
};
class ostream: virtual public ios
{
};

As classes _withassign são fornecidas com funcionalidade extra para as operações de atribuição, por isso as classes _withassign
 

Facilidades fornecidas por essas classes de fluxo. 
 

  1. A classe ios: A classe ios é responsável por fornecer todos os recursos de entrada e saída para todas as outras classes de fluxo. 
     
  2. A classe istream: esta classe é responsável por manipular o fluxo de entrada. Ele fornece várias funções para lidar com chars, strings e objetos como get, getline, read, ignore, putback etc. 
    Exemplo: 
     
#include <iostream>
using namespace std;
 
int main()
{
    char x;
 
    // used to scan a single char
    cin.get(x);
 
    cout << x;
}

Entrada: 
 

g

Saída: 
 

g

A classe ostream: esta classe é responsável por lidar com o fluxo de saída. Ele fornece várias funções para lidar com chars, strings e objetos como write, put etc. 
Exemplo: 
 

#include <iostream>
using namespace std;
 
int main()
{
    char x;
 
    // used to scan a single char
    cin.get(x);
 
    // used to put a single char onto the screen.
    cout.put(x);
}
  1. Entrada: 
     
g

Saída: 
 

g

O iostream: esta classe é responsável por lidar com o fluxo de entrada e saída, pois tanto a classe istream quanto a classe o stream são herdadas nela. Ele fornece a função da classe istream e da classe o stream para lidar com chars, strings e objetos como get, getline, read, ignore, putback, put, write etc. 
Exemplo: 
 

#include <iostream>
using namespace std;
 
int main()
{
 
    // this function display
    // ncount character from array
    cout.write("geeksforgeeks", 5);
}

Saída: 
 

geeks

classe istream_withassign: esta classe é uma variante do istream que permite a atribuição de objetos. O objeto predefinido cin é um objeto desta classe e, portanto, pode ser reatribuído em tempo de execução a um objeto istream diferente . 
Exemplo: Para mostrar que cin é objeto da classe istream
 

#include <iostream>
using namespace std;
 
class demo {
public:
    int dx, dy;
 
    // operator overloading using friend function
    friend void operator>>(demo& d, istream& mycin)
    {
        // cin assigned to another object mycin
        mycin >> d.dx >> d.dy;
    }
};
 
int main()
{
    demo d;
    cout << "Enter two numbers dx and dy\n";
 
    // calls operator >> function and
    // pass d and cin as reference
    d >> cin; // can also be written as operator >> (d, cin) ;
 
    cout << "dx = " << d.dx << "\tdy = " << d.dy;
}

Entrada: 
 

4 5

Saída: 
 

Enter two numbers dx and dy
4 5
dx = 4  dy = 5

classe ostream_withassign: esta classe é uma variante do ostream que permite a atribuição de objetos. Os objetos predefinidos cout, cerr, clog são objetos dessa classe e, portanto, podem ser reatribuídos em tempo de execução a um objeto ostream diferente . 
Exemplo: Mostrar que cout é objeto da classe ostream
 

#include <iostream>
using namespace std;
 
class demo {
public:
    int dx, dy;
 
    demo()
    {
        dx = 4;
        dy = 5;
    }
 
    // operator overloading using friend function
    friend void operator<<(demo& d, ostream& mycout)
    {
        // cout assigned to another object mycout
        mycout << "Value of dx and dy are \n";
        mycout << d.dx << " " << d.dy;
    }
};
 
int main()
{
    demo d; // default constructor is called
 
    // calls operator << function and
    // pass d and cout as reference
    d << cout; // can also be written as operator << (d, cout) ;
}

Saída: 
 

Value of dx and dy are
4 5

Artigos Relacionados
 

Quer aprender com os melhores vídeos com curadoria e problemas práticos, confira o C++ Foundation Course for Basic to Advanced C++ e C++ STL Course for Foundation plus STL. Para completar sua preparação desde o aprendizado de um idioma até o DS Algo e muitos mais, consulte o Curso Completo de Preparação para Entrevistas .