Entrada/saída básica C++: exemplo Cout, Cin, Cerr

O que são fluxos em C++?

C++ fornece aos usuários diversas bibliotecas que eles podem usar para executar tarefas de entrada/saída. Essas tarefas são realizadas na forma de sequências de bytes, popularmente chamadas de streams.

Os fluxos são divididos em dois:

Tipos de fluxos

  • 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: Este é um tipo de fluxo onde os bytes fluem na direção oposta, ou seja, da memória principal e depois para o dispositivo como a tela do display.

Como funcionam os fluxos?

Os fluxos C++ funcionam da seguinte maneira:

  1. Primeiro, um fluxo é inicializado com o tipo correto.
  2. A seguir, você deve indicar onde I / O ocorrerá usando ponteiros get/put.
  3. 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

O seguintewing são as funções fornecidas no arquivo de cabeçalho stream.h:

Aula Funções
Arquivobuf Ele define o arquivo buffers para ler/escrever. 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.
de corrente É uma classe de fluxo de arquivo de saída para fornecer operações de saída.
stream É uma classe de fluxo de entrada/saída. Suporta simultaneonós operações de entrada/saída.

Arquivos de cabeçalho C++ para entrada/saída

C++ fornece três bibliotecas que vêm com funções para executar 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 utilizadas 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 de arquivos. Ele lida com dados que são lidos do arquivo como entrada ou gravados em um arquivo, a saída.

As palavras-chave cin e cout são muito populares em C++. Eles são usados ​​para receber entradas e imprimir saídas, respectivamente. Para usá-los, você deve incluir o arquivo de cabeçalho iostream em seu programa. A razão é que eles estã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 stream (<<).

Exemplo

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Saída:

std :: cout

Aqui está uma captura de tela do código:

std :: cout

Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream onde o objeto cout está definido.
  2. Inclua o namespace std para que não tenhamos que chamá-lo ao usar suas classes.
  3. Chame a função main(). O código do programa deve ser adicionado ao seu corpo. A chave de abertura {marca o início de seu corpo.
  4. Crie uma variável de caractere chamada bem-vindo para conter a string Bem-vindo ao Guru99.
  5. Imprima o valor da string bem-vindo no console. O endl é uma palavra-chave C++ que significa linha final. Move o cursor para começar a imprimir o texto na próxima linha.
  6. O programa deve retornar um valor após a execução bem-sucedida.
  7. 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 pelo teclado do objeto cin.

Exemplo

O seguintewing exemplo demonstra como usar a palavra-chave cin em C + +:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

Saída:

std :: cin

Aqui está uma captura de tela do código:

std :: cin

Explicação do código:

  1. Inclua o arquivo de cabeçalho iostream em nosso programa. O objeto cin é definido neste arquivo de cabeçalho.
  2. Inclua o namespace std para usar suas classes. Você não precisará chamar std ao usar suas classes.
  3. Chame a função main(). O código do programa deve ser adicionado ao seu corpo.
  4. O início do corpo do programa.
  5. Declare um variável inteira número nomeado.
  6. Imprima uma mensagem na tela solicitando que o usuário insira um número.
  7. Leia o valor inserido pelo usuário no console a partir do teclado.
  8. Imprima o valor lido acima no console junto com outro texto.
  9. O programa deve retornar um valor se for executado com sucesso.
  10. Fim do corpo da função principal.

std::cerr

O objeto cerr forma o fluxo de erros padrão para gerar erros em C++. Cerr é uma instância da classe ostream. O objeto cerr é unbufferEd. Isso significa que é usado quando uma mensagem de erro deve ser exibida imediatamente.

Já que não ébuffered, ele não armazena mensagens de erro para um later mostrar. É usado junto com o operador de inserção de stream (<<).

Exemplo

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

Saída:

std::cerr

Aqui está uma captura de tela do código:

std::cerr

Explicação do código:

  1. Inclui o arquivo de cabeçalho iostream onde o objeto cerr foi definido.
  2. Inclua o namespace std para que não tenhamos que chamá-lo ao usar suas classes.
  3. Chame a função main(). A lógica do programa deve ser adicionada ao seu corpo. A chave de abertura marca o início do corpo da função.
  4. Use o objeto cerr para imprimir um erro no console.
  5. O programa deve retornar um valor após a execução bem-sucedida.
  6. 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 é bufferEd. Já que é buffered, ele armazena a mensagem de erro em buffer até o buffer está cheio/lavado. É usado junto com o operador de inserção de stream (<<).

Exemplo

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

Saída:

std::entupir

Aqui está uma captura de tela do código:

std::entupir

Explicação do código:

  1. Incluindo o arquivo de cabeçalho iostream no qual o objeto clog é definido.
  2. Incluindo o namespace std para que possamos usar suas classes sem chamá-lo.
  3. Chamando a função main(). A lógica do programa deve ser adicionada ao seu corpo. O { marca o início do corpo da função.
  4. Use o objeto clog para imprimir um erro na saída padrão, o monitor.
  5. O programa deve retornar um valor após a conclusão bem-sucedida.
  6. O final 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 booleano.

Aqui está um exemplo:

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

Para obter mais details para o status do stream, você pode usar estas funções:

  • good()- retornará verdadeiro se tudo estiver bem.
  • bad()- retornará verdadeiro se ocorrer um erro fatal.
  • fail() - retornará verdadeiro após operação de fluxo 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 por meio de sequência de bytes. Os bytes são chamados de fluxos.
  • 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. 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 de obstrução buffers mensagens de erro, enquanto o objeto cerr não.