Estrutura de classes de fluxo C++
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.
- A classe ios é a classe mais alta na hierarquia de classes de fluxo. É a classe base para as classes istream, ostream e streambuf .
- istream e ostream servem as classes básicas para a classe iostream . A classe istream é usada para entrada e ostream para saída.
- 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.
- 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.
- 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);
}
- 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 :
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva