O que são Streams em C ++?
C ++ fornece aos usuários uma série de bibliotecas que eles podem usar para realizar tarefas de entrada / saída. Essas tarefas são feitas na forma de sequências de bytes, popularmente chamadas de streams.
Os fluxos são divididos em dois:
Tipos de streams
- Fluxo de entrada: este é um tipo de fluxo em que os bytes fluem de um dispositivo, como um teclado, para a memória principal.
- Fluxo de saída: é um tipo de fluxo onde os bytes fluem na direção oposta, ou seja, da memória principal para o dispositivo como a tela do monitor.
Neste tutorial C ++, você aprenderá:
- O que são Streams em C ++?
- Como funcionam os streams?
- Tabela de Função
- Arquivos de cabeçalho C ++ para entrada / saída
- std :: cout
- std :: cin
- std :: cerr
- std :: entupir
- Tratamento de erros com fluxos IO:
Como funcionam os streams?
Os streams C ++ funcionam da seguinte maneira:
- Primeiro, um fluxo é inicializado com o tipo certo.
- Em seguida, você deve indicar onde ocorrerá a E / S usando os ponteiros get / put.
- Depois de chegar ao local certo em um fluxo, você pode executar tarefas de entrada e saída usando os operadores >> e <<, respectivamente.
Tabela de Função
A seguir estão as funções fornecidas no arquivo de cabeçalho stream.h:
Aula | Funções |
Filebuf | Ele define os buffers de arquivo para leitura / gravação. Possui funções close () e open () |
fstreambase | É a classe base para as classes ifstream, fstream e ofstream. Suas operações são comuns aos fluxos de arquivos. |
ifstream | É uma classe de fluxo de arquivo de entrada para fornecer operações de entrada. |
ofstream | É uma classe de fluxo de arquivo de saída para fornecer operações de saída. |
fstream | É uma classe de fluxo de entrada / saída. Ele suporta operações de entrada / saída simultâneas. |
Arquivos de cabeçalho C ++ para entrada / saída
C ++ fornece três bibliotecas que vêm com funções para realizar tarefas básicas de entrada / saída. Eles incluem:
- Iostream: É um acrônimo para fluxo de entrada / saída padrão. Este arquivo de cabeçalho vem com definições para objetos como cin / cout / cerr.
- Iomanip: É um acrônimo para manipuladores de entrada / saída. A biblioteca vem com funções que podem ser usadas para a manipulação de streams. Ele contém definições para objetos como setw, setprecision e outros.
- Fstream: Este é um arquivo de cabeçalho para descrever o fluxo do arquivo. Ele lida com dados que são lidos do arquivo como entrada ou que são gravados em um arquivo, a saída.
As palavras-chave cin e cout são muito populares em C ++. Eles são usados para obter entradas e saídas de impressão, respectivamente. Para usá-los, você deve incluir o arquivo de cabeçalho iostream em seu programa. A razão é que eles são definidos nesse arquivo de cabeçalho. A não inclusão do arquivo de cabeçalho iostream gerará um erro. Isso resulta de uma falha do compilador C ++ em entender o significado das palavras-chave.
Os principais objetos definidos no arquivo de cabeçalho iostream são cin, cout, cerr e clog. Vamos discuti-los.
std :: cout
O objeto cout é uma instância da classe iostream. É usado para produzir saída em um dispositivo de saída padrão, que normalmente é a tela. É usado junto com o operador de inserção de fluxo (<<).
Exemplo:
#includeusing namespace std;int main() {char welcome[] = "Welcome to Guru99";cout << welcome << endl;return 0;}
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclui o arquivo de cabeçalho iostream onde o objeto cout é definido.
- Inclua o namespace std para que não tenhamos que chamá-lo ao usar suas classes.
- Chame a função main (). O código do programa deve ser adicionado em seu corpo. A chave de abertura {marca o início de seu corpo.
- Crie uma variável de caractere chamada welcome para conter a string Welcome to Guru99.
- Imprima o valor da string welcome no console. O endl é uma palavra-chave C ++ que significa linha final. Ele move o cursor para começar a imprimir o texto na próxima linha.
- O programa deve retornar o valor após a execução bem-sucedida.
- Fim do corpo da função main ().
std :: cin
O objeto cin é uma instância da classe istream. Ele lê a entrada do dispositivo de entrada, o teclado. Normalmente é usado junto com o operador de extração (>>). O objeto de extração é responsável por extrair os dados inseridos por meio do teclado do objeto cin.
Exemplo:
O exemplo a seguir demonstra como usar a palavra-chave cin em C ++:
#includeusing namespace std;int main(){int number;cout << "Enter a number:";cin >> number;cout << "\nYou entered: " << number;return 0;}
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclua o arquivo de cabeçalho iostream em nosso programa. O objeto cin é definido neste arquivo de cabeçalho.
- Inclua o namespace std para usar suas classes. Você não terá que chamar std ao usar suas classes.
- Chame a função main (). O código do programa deve ser adicionado em seu corpo.
- O início do corpo do programa.
- Declare uma variável inteira chamada número.
- Imprima uma mensagem na tela solicitando que o usuário insira um número.
- Leia o valor inserido pelo usuário no console a partir do teclado.
- Imprima o valor lido acima no console junto com outro texto.
- O programa deve retornar um valor se for executado com êxito.
- Fim do corpo da função principal.
std :: cerr
O objeto cerr forma o fluxo de erro padrão para erros de saída em C ++. Cerr é uma instância da classe ostream. O objeto cerr não tem buffer. Isso significa que é usado quando uma mensagem de erro deve ser exibida imediatamente.
Uma vez que não tem buffer, não armazena mensagem de erro para uma exibição posterior. É usado junto com o operador de inserção de fluxo (<<).
Exemplo:
#includeusing namespace std;int main() {cerr << "An Error occurred!";return 0;}
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Inclui o arquivo de cabeçalho iostream onde o objeto cerr foi definido.
- Inclua o namespace std para que não tenhamos que chamá-lo ao usar suas classes.
- Chame a função main (). A lógica do programa deve ser adicionada em seu corpo. A chave de abertura marca o início do corpo da função.
- Use o objeto cerr para imprimir um erro no console.
- O programa deve retornar um valor após a execução bem-sucedida.
- Fim do corpo da função principal.
std :: entupir
O objeto clog é uma instância da classe ostream. É usado para mostrar erros na tela padrão, o monitor. É semelhante ao objeto cerr, mas é armazenado em buffer. Como está em buffer, ele armazena a mensagem de erro no buffer até que o buffer seja preenchido / liberado. É usado junto com o operador de inserção de fluxo (<<).
Exemplo:
#includeusing namespace std;int main() {clog << "An Error occurred!";return 0;}
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Incluindo o arquivo de cabeçalho iostream no qual o objeto de obstrução é definido.
- Incluindo o namespace std para que possamos usar suas classes sem chamá-lo.
- Chamando a função main (). A lógica do programa deve ser adicionada em seu corpo. O {marca o início do corpo da função.
- Use o objeto de obstrução para imprimir um erro na saída padrão, o monitor.
- O programa deve retornar um valor após a conclusão bem-sucedida.
- O fim do corpo da função main ().
Tratamento de erros com fluxos IO:
Para verificar se um fluxo é válido ou não, você pode usá-lo como um booleano.
Aqui está um exemplo:
ifstream file( "myfile.txt" );if ( ! file ){cout << "File NOT opened!" << endl;}
Para obter mais detalhes sobre o status do stream, você pode usar estas funções:
- good () - retornará true se tudo estiver bem.
- bad () - retornará verdadeiro se ocorrer um erro fatal.
- fail () - retornará true após operação de stream malsucedida.
- eof () - retornará verdadeiro se chegar ao final de um arquivo.
Para saber se uma determinada operação de leitura / gravação falhou, teste o resultado da leitura.
Por exemplo, para verificar se o usuário inseriu um número inteiro válido, faça o seguinte:
int p;if ( cin >> p ){cout << "Enter valid number" << endl;}
Resumo
- As tarefas de entrada e saída em C ++ são feitas via sequência de bytes. Os bytes são chamados de streams.
- Em um fluxo de entrada, os bytes fluem do dispositivo de entrada como um teclado para a memória principal.
- Em um fluxo de saída, os bytes da memória principal são enviados para um dispositivo de saída como um monitor.
- O objeto cin é uma instância da classe istream. Ele lê a entrada de um dispositivo de entrada como o teclado.
- O objeto cout é uma instância da classe ostream. Ele produz saída em dispositivos de saída como o monitor.
- O objeto cerr é uma instância da classe ostream. Ele exibe objetos de erro no monitor.
- O objeto clog é uma instância da classe ostream. Ele exibe mensagens de erro nos dispositivos de saída.
- O objeto clog armazena mensagens de erro, enquanto o objeto cerr não.